codeforces 455B A Lot of Games(博弈,字典树)
2014-08-12 08:55
423 查看
题目
参考自博客:/article/2061800.html
//字典树,博弈
根据当前节点的后续来确定当前节点的状态,0是由对手决定,1是只有可能输,2是只有可能赢,3是可以决定自己的胜负。这些状态是要综合所有后续情况确定的。
View Code
参考自博客:/article/2061800.html
//字典树,博弈
根据当前节点的后续来确定当前节点的状态,0是由对手决定,1是只有可能输,2是只有可能赢,3是可以决定自己的胜负。这些状态是要综合所有后续情况确定的。
#include<stdio.h> #include<iostream> #include<string.h> #include<string> #include<algorithm> using namespace std; int pos=0; string s; struct tt { int val,arr[30]; tt(){memset(arr,-1,sizeof(arr));val=0;} }a[1000010]; void insert(int id,int d) { if(d==s.length())return ; int t=s[d]-'a'; if(a[id].arr[t]==-1) a[id].arr[t]=++pos; insert(a[id].arr[t],d+1); } int solve(int d) { int ans=0; int flag=1; for(int i=0;i<26;i++) { if(a[d].arr[i]!=-1) { flag=0; ans|=solve(a[d].arr[i]); } } if(flag) ans=1; return 3-ans; } int main() { int n,m; cin>> n>>m; pos=0; while(n--) { cin>>s; insert(0, 0); } int ans = 3 - solve(0); if(ans==3)cout <<"First"<<endl; else if(ans==1||ans==0)cout <<"Second"<<endl; else { if(m&1)cout <<"First"<<endl; else cout <<"Second"<<endl; } return 0; }
View Code
相关文章推荐
- 【CodeForces】445B A Lot of Games 字典树博弈
- codeforces 455B A Lot of Games(博弈,字典树)
- Codeforces 455B A Lot of Games(字典树+博弈)
- CodeForces 455B A Lot of Games 字典树 博弈
- 【字典树+dp】 codeforces 455B A Lot of Games
- Codeforces 455B A Lot of Games(博弈)
- codeforces 455B A Lot of Games (Trie + dfs)
- Codeforces 455B A Lot of Games 字典树上博弈
- 字典树+博弈 CF 455B A Lot of Games(接龙游戏)
- Codeforces 455B A Lot of Games 字典树上博弈
- 字典树(+DFS)——Watto and Mechanism ( CodeForces 514C )
- [博弈 杂题] Codeforces 794E Round #414 E. Choosing Carrot
- Codeforces 78C Beaver Game(数论、博弈)
- codeforces 812 E. Sagheer and Apple Tree(树上博弈)
- CF456D A Lot of Games (字典树+DP)
- CF455B - A Lot of Games(Trie树+博弈)
- CodeForces 706D Vasiliy's Multiset 字典树
- Codeforces 706D Vasiliy's Multiset(异或字典树)
- codeforces 665E (字典树)
- codeforces 727E. Games on a CD(双Hash