Untitled
unknown
plain_text
2 years ago
1.0 kB
3
Indexable
#include <iostream> #define max(a, b) (a > b) ? a : b using namespace std; int off; int T, N, K; int arr[105]; int ans; int key[12][100]; void change(int x){ for(int i = 1; i <= key[x][0]; i++){ if(arr[key[x][i]] == 1){ arr[key[x][i]] == 0; off++; }else{ arr[key[x][i]] == 1; off--; } } } void backtrack(int k){ if(k > 3) return; ans = max(ans, off); for(int i = 1; i <= K; i++){ change(i); backtrack(k + 1); change(i); } } int main(){ freopen("input.txt", "rt", stdin); cin >> T; for(int tc = 1; tc <= T; tc++){ cin >> N >> K; off = 0; for(int i = 1; i <= N; i++){ cin >> arr[i]; if(arr[i] == 0){ off++; } } for(int i = 1; i <= K; i++){ int cnt = 0; for(int j = 0; j < N; j++){ if(i + j * (i + 1) <= N){ key[i][j + 1] = i + j * (i + 1); cnt++; } } key[i][0] = cnt; } ans = off; backtrack(0); cout << "#" << tc << " " << ans << endl; } return 0; }
Editor is loading...
Leave a Comment