CodeForces Gym 100500A A. Poetry Challenge DFS
2017-02-27 18:02
309 查看
题目链接:
http://codeforces.com/gym/100500/attachments题意:
文字接龙,谁接不下去了,就算谁输 输出赢家都很聪明的情况下
题解:
看起来是博弈 不会啊 这个dfs还不懂qsc ls:转化成图论之后,直接DFS爆搜就好了!
代码:
#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_back const 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 = 1e4+10; int n,m,vis[30],flag; char s1[11][maxn],s2[11][maxn]; vector<int> e[30]; bool dfs(int x){ for(int i=0; i<(int)e[x].size(); i++){ int v = e[x][i]; if(vis[v]) continue; vis[v] = 1; if(!dfs(v)){ // 返回了0 说明对于v 对手已经没有接的了 对当前玩家x来说 是不利的 不能选以v的开头为尾的x vis[v] = 0; return 1; // 返回1 对于上一层的这个点是不行的 就要选下一个点(如果有) } } return 0; // 返回0表示 x的对手没有可以接的了, win } int main(){ int T=read(); for(int cas=1; cas<=T; cas++){ for(int i=0; i<=25; i++) e[i].clear(); MS(vis); flag = 0; n=read(); for(int i=0; i<n; i++) gets(s1[i]); m = read(); for(int i=0; i<m; i++) gets(s2[i]); for(int i=0; i<n; i++){ int len = strlen(s1[i]); for(int j=0; j<m; j++) if(s1[i][len-1] == s2[j][0]) e[i].push_back(j+9); } for(int j=0; j<m; j++){ int len = strlen(s2[j]); for(int i=0; i<n; i++) if(s2[j][len-1] == s1[i][0]) e[j+9].push_back(i); } for(int i=0; i<n; i++){ vis[i] = 1; if(!dfs(i)){ flag = 1; break; } vis[i] = 0; } if(flag) cout << "Game " << cas << ": player1\n"; else cout << "Game " << cas << ": player2\n"; } return 0; } //http://codeforces.com/gym/100500/attachments
相关文章推荐
- Codeforces Gym 100589F Count Ways(DP+组合数学)
- Codeforces Gym 101061 F(暴力搜索做法)
- [扫描线 杂题] Codeforces Gym 101190 NEERC 16 E. Expect to Wait
- Codeforces gym 101350G 数学
- codeforces gym 2016-2017 NEERC, Moscow Subregional K. Knights of the Old Republic 最小生成树+dp
- Codeforces Gym 101612 | 2017-2018 NEERC St Petersburg Subregional
- CodeForcesGym 100735D Triangle Formation
- Codeforces Gym - 101064A Renzo and the lost artifact [模拟退火]
- Codeforces Gym 100825F Transportation Delegation (最大流)
- [构造] Codeforces Gym 100553 NEERC 14 E. Epic Win!
- Codeforces Gym 101608 G WiFi Password(尺取/二分+ST表 )
- CodeForces Gym 100989C 1D Cafeteria (A)
- CodeForces Gym 100971J 感觉题意有问题 BFS
- CodeForces Gym 100646E Su-Su-Sudoku
- Codeforces Gym-101116-F (Flight Plan)
- Codeforces Gym 100015F Fighting for Triangles 状态压缩DP
- Codeforces Gym 100803C Shopping 贪心
- Codeforces Gym 101234H Split Game
- Codeforces Gym 101190 (NEERC 2016) J. Jenga Boom
- [二分答案 2-SAT验证 前缀后缀优化建图 线段树优化建图] Codeforces gym 100159 Facebook Hacker Cup 2012 I. Unfriending