标签:
| Time Limit: 1000MS | Memory Limit: 65536K | |
| Total Submissions: 40424 | Accepted: 17556 |
Description
Consider the following position as an example:
Input
Output
Sample Input
bwwb bbwb bwwb bwww
Sample Output
4
Source
#include <cstdio>
#include <algorithm>
using namespace std;
const int INF = 0x7fffffff;
char s[20];
int change[16] = {19,39,78,140,305,626,1252,2248,4880,8992,20032,35968,12544,29184,58368,51200};
int pos[16] = {1,2,4,8,16,32,64,128,256,512,1024,2048,4096,8192,16384,32768};
void solve()
{
int init_state = 0;
for(int i = 0; i < 16; ++i){
if(s[i] == ‘b‘)
init_state += pos[i];
}
int res = INF;
for(int i = 0; i < 65536; ++i){
int cnt = 0;
int state = init_state;
for(int j = 0; j < 16; ++j){
if(i&pos[j]){
++cnt;
state ^= change[j];
}
}
if(state == 0 || state == 65535)
res = min(res, cnt);
}
if(res == INF)
printf("Impossible\n");
else
printf("%d\n", res);
}
int main()
{
for(int i = 0; i < 4; ++i)
scanf("%s", &s[i*4]);
solve();
return 0;
}
标签:
原文地址:http://www.cnblogs.com/inmoonlight/p/5790786.html