1. cowfood
Constraints :

For 16% data : enum.
Code :
#include
using namespace std;
int main() {
freopen("cowfood.in", "r", stdin);
freopen("cowfood.out", "w", stdout);
int H, W;cin >> H >> W;
int G[H*W];
for (int i=0;i G[i*W+j];
}
map fs, rfs;
int count=0;
for (int i=0;i<H;i++) {
for (int j=0;j<W;j++) {
if (G[i*W+j]==1) fs[i*W+j]=count++, rfs[count-1]=i*W+j;
}
}
int plans=0;
for (int k=0;k<(1<<count);k++) {
for (int i=0;i<count;i++) {
if (k&(1<=0) {
if (fs.find(cur-W)!=fs.end()&&(k&(1<<fs[cur-W]))) goto stat_end;
}
if (cur+W<H*W) {
if (fs.find(cur+W)!=fs.end()&&(k&(1<=0) {
if (fs.find(cur-1)!=fs.end()&&(k&(1<=0) {
if (fs.find(cur+1)!=fs.end()&&(k&(1<<fs[cur+1]))) goto stat_end;
}
}
}
plans++;
plans%=100000000;
stat_end: ;
}
cout << plans;
return 0;
}
(It\’s actually wrong, it can only get 12.)
Solution