Codeforces Gym 100650C The Game of Efil DFS
来源:互联网 发布:python color map 编辑:程序博客网 时间:2024/05/19 14:38
题目链接:
http://codeforces.com/gym/100650/attachments
题意:
每个细胞如果四周细胞太少了,就会孤独而死,如果细胞周围细胞太多了,就会挤死。给你个布局,问你他的上一代布局会有几种。不过这道题的关键在于wrap around这个词,即边界是循环的。
题解:
数据范围很小,n*m<=16,所以直接dfs出所有的状态
然后再check
代码:
#include <bits/stdc++.h>using namespace std;typedef long long ll;#define MS(a) memset(a,0,sizeof(a))#define MP make_pair#define PB push_backconst int INF = 0x3f3f3f3f;const ll INFLL = 0x3f3f3f3f3f3f3f3fLL;inline ll read(){ ll x=0,f=1;char ch=getchar(); while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();} while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();} return x*f;}//////////////////////////////////////////////////////////////////////////const int maxn = 1e5+10;int n,m,k,ans;int G[20][20],d[20][20],d2[20][20],cnt[20][20];int dx[8] = {0,0,1,-1,1,1,-1,-1};int dy[8] = {1,-1,0,0,1,-1,1,-1};int C(int x,int k){ if(x == -1) return k-1; if(x == k) return 0; return x;}bool check(){ MS(d2); MS(cnt); for(int i=0; i<n; i++) for(int j=0; j<m; j++){ for(int k=0; k<8; k++){ int x = C(i+dx[k],n); int y = C(j+dy[k],m); if(d[x][y] == 1) cnt[i][j]++; } } for(int i=0; i<n; i++) for(int j=0; j<m; j++){ if(d[i][j] == 1){ if(cnt[i][j]==2 || cnt[i][j]==3) d2[i][j] = 1; else d2[i][j] = 0; }else{ if(cnt[i][j] == 3) d2[i][j] = 1; else d2[i][j] = 0; } } for(int i=0; i<n; i++) for(int j=0; j<m; j++) if(G[i][j] != d2[i][j]) return 0; return 1;}void dfs(int x,int y){ if(x == n){ if(check()) ans++; return ; } d[x][y] = 0; if(y == m-1) dfs(x+1,0); else dfs(x,y+1); d[x][y] = 1; if(y == m-1) dfs(x+1,0); else dfs(x,y+1); d[x][y] = 0;}int main(){ int cas=1; while(cin>>n>>m,(n+m)){ MS(d); MS(G); ans=0; cin >> k; for(int i=0; i<k; i++){ int x,y; cin>>x>>y; G[x][y] = 1; } dfs(0,0); if(ans != 0) cout << "Case " << cas++ << ": " << ans << " possible ancestors.\n"; else cout << "Case " << cas++ << ": Garden of Eden.\n"; } return 0;}// http://codeforces.com/gym/100650/attachments
0 0
- Codeforces Gym 100650C The Game of Efil DFS
- Codeforces Gym100650C The Game of Efil
- soj1171 The Game of Efil
- Sicily 1171. The Game of Efil
- sicily 1171. The Game of Efil
- codeforces 813C The Tag Game dfs
- codeforces--C. Predict Outcome of the Game
- Sicily 1171. The Game of Efil 【利用完全二叉树遍历构造序列】
- Educational Codeforces Round 22 C. The Tag Game dfs
- Codeforces 813C The Tag Game【思维+Dfs】
- codeforces 813C The Tag Game dfs && 路径长度
- codeforces 549C C. The Game Of Parity(博弈)
- Codeforces #258 (Div. 2) C. Predict Outcome of the Game
- Codeforces 451C Predict Outcome of the Game
- Codeforces 451C Predict Outcome of the Game(暴力)
- codeforces 258(Div.2) C. Predict Outcome of the Game
- Codeforces Div. 2 #258-C. Predict Outcome of the Game
- CodeForces 451 C. Predict Outcome of the Game
- 略写linux发展史
- UML类图简单介绍
- Ubuntu14.04 安装CUDA攻略与易错提醒
- 172. Factorial Trailing Zeroes
- Java的反射机制实用
- Codeforces Gym 100650C The Game of Efil DFS
- 【UGUI】一键对齐父节点
- 【HDU 2161】Primes(素数~水)
- Overview of HEVC帧内预测
- synchronize的实现原理
- 在做自动化测试之前你需要知道的
- 码农周刊分类整理
- 得到随机颜色
- 剑指Offer:旋转数组中的最小数字