Codeforces 755B. PolandBall and Game 贪心
2017-01-30 13:28
519 查看
题目大意:
有两个人轮流说单词,已经说过的单词不能再说。给出两人掌握的不同的单词,两人可能掌握相同的单词,但是这个单词也只能说一边。问在两人都是最优策略下先手是否必胜.
题解:
我们发现最优策略一定是先说两人都掌握的单词。
所以我们求出所有同时被掌握的单词
然后根据这种单词的奇偶性来判断即可.
求的时候写了个Trie...
不过好像直接暴力也可以..
#include <cstdio> #include <cstring> #include <algorithm> using namespace std; typedef long long ll; inline void read(int &x){ x=0;char ch;bool flag = false; while(ch=getchar(),ch<'!');if(ch == '-') ch=getchar(),flag = true; while(x=10*x+ch-'0',ch=getchar(),ch>'!');if(flag) x=-x; } inline int cat_max(const int &a,const int &b){return a>b ? a:b;} inline int cat_min(const int &a,const int &b){return a<b ? a:b;} const int maxn = 1024; char s[512]; int nodecnt = 0; int ch[maxn*256][28]; bool flag[maxn*256]; int root = 0; void insert(char *s){ int n = strlen(s+1); int nw = root; for(int i=1;i<=n;++i){ if(ch[nw][s[i] - 'a'] == 0) ch[nw][s[i] - 'a'] = ++nodecnt; nw = ch[nw][s[i] - 'a']; }flag[nw] = true; } bool find(char *s){ int n = strlen(s+1); int nw = root; for(int i=1;i<=n;++i){ if(ch[nw][s[i] - 'a'] == 0) return false; nw = ch[nw][s[i] - 'a']; }return flag[nw]; } int main(){ int n,m;read(n);read(m); for(int i=1;i<=n;++i){ scanf("%s",s+1); insert(s); } int com = 0; for(int i=1;i<=m;++i){ scanf("%s",s+1); if(find(s)) ++com; }n -= com;m -= com; if(com&1){ if(n >= m) puts("YES"); else puts("NO"); }else{ if(n > m) puts("YES"); else puts("NO"); } getchar();getchar(); return 0; }
相关文章推荐
- CodeForces 767E Change-free【贪心+优先队列】
- codeforces 484D Kindergarten (dp、贪心)
- Codeforces 529B Group Photos 2 (one mirror version) [贪心]
- Codeforces 432C Prime Swaps【筛法素数预处理+贪心】
- 【Codeforces 780 D Innokenty and a Football League 】+ 模拟 + 贪心
- CodeForces - 731C Socks(并查集)(贪心)
- CodeForces 489C (贪心) Given Length and Sum of Digits...
- CodeForces 780D Innokenty and a Football League【模拟+贪心】
- CodeForces 349B Color the Fence (贪心)
- Codeforces Round #424 (Div. 2, rated, based on VK Cup Finals) Problem D (Codeforces 831D) - 贪心 - 二分答案 - 动态规划
- Codeforces 3A. Shortest path of the king(贪心:暴力)
- 【codeforces 731C 】【并查集+贪心 或者dfs搞连通分支 】【有n只袜子,k种颜色,在m天中,左右脚分别穿下标为l,r的袜子,问最少修改几只袜子颜色,可以使每天穿的袜子左右两只都同色】
- CodeForces 580B Kefa and Company <贪心>
- CodeForces 3 D.Least Cost Bracket Sequence(贪心+优先队列)
- CodeForces 725 F.Family Photos(贪心)
- 【Codeforces】-597B-Restaurant(贪心)
- Codeforces 888G Xor-MST - 分治 - 贪心 - Trie
- CodeForces - 913D(贪心+优先队列)
- Codeforces 521A DNA Alignment【贪心+思维】
- Codeforces 579D "Or" Game【贪心+暴力按位处理】