/*8VC Venture Cup 2017 - Elimination RoundPolandBall and Hypothesis时间: 2017/02/21题意:题解:枚举*/#include<cstdio>#include<cstring>/*8VC Venture Cup 2017 - Elimination RoundPolandBall and Game时间: 2017/02/21题意:给出A,B人熟悉的单词,A轮流B说一个单词,并且A先说。一个人不能说另一个人说过的单词,谁不能说出单词,谁就输了,问A能赢吗题解:策略上A,B如果有一样的单词,先手先说出这个单词对其有利,所以相同的单词如果奇数,那么A可以比B在相同的单词上多一次可以说*/#include<cstdio>#include<cstring>#include<cmath>#include<iostream>#include<algorithm>#include<queue>#include<map>using namespace std;#define ll long longconst int N = 1000010;const int INF = 0x3f3f3f3f;map<string,int> mp1;map<string,int> mp2;int main(){ int n,m; while(cin >> n >> m) { mp1.clear(); mp2.clear(); string s; int a1 = 0,a2 = 0,same = 0; for(int i = 0; i < n; i++) { cin >> s; mp1[s] = 1; a1++; } for(int i = 0; i < m; i++) { cin >> s; if(mp1[s] == 1) same++; mp2[s] = 1; a2++; } if(same&1) a1++; if(a1 > a2) puts("YES"); else puts("NO"); } return 0;}
/*8VC Venture Cup 2017 - Elimination RoundPolandBall and Game时间: 2017/02/21题意:给出A,B人熟悉的单词,A轮流B说一个单词,并且A先说。一个人不能说另一个人说过的单词,谁不能说出单词,谁就输了,问A能赢吗题解:策略上A,B如果有一样的单词,先手先说出这个单词对其有利,所以相同的单词如果奇数,那么A可以比B在相同的单词上多一次可以说*/#include<cstdio>#include<cstring>#include<cmath>#include<iostream>#include<algorithm>#include<queue>#include<map>using namespace std;#define ll long longconst int N = 1000010;const int INF = 0x3f3f3f3f;map<string,int> mp1;map<string,int> mp2;int main(){ int n,m; while(cin >> n >> m) { mp1.clear(); mp2.clear(); string s; int a1 = 0,a2 = 0,same = 0; for(int i = 0; i < n; i++) { cin >> s; mp1[s] = 1; a1++; } for(int i = 0; i < m; i++) { cin >> s; if(mp1[s] == 1) same++; mp2[s] = 1; a2++; } if(same&1) a1++; if(a1 > a2) puts("YES"); else puts("NO"); } return 0;}
/*8VC Venture Cup 2017 - Elimination RoundPolandBall and Forest时间: 2017/02/21题意:i和pi是可以合并的,问能合并成几个集合题解:并查集*/#include<cstdio>#include<cstring>#include<cmath>#include<iostream>#include<algorithm>#include<queue>#include<map>using namespace std;#define ll long longconst int N = 10010;const int INF = 0x3f3f3f3f;int fa[N];int Find(int x){ if(fa[x] != x) fa[x] = Find(fa[x]); return fa[x];}void unio(int x,int y){ int dx = Find(x); int dy = Find(y); if(dx != dy) fa[dy] = dx; return ;}int main(){ int n; while(cin >> n) { for(int i = 1; i <= n; i++) fa[i] = i; for(int i = 1; i <= n; i++) { int a; scanf("%d",&a); unio(i,a);// for(int j = 1; j <= n; j++)// printf("%d ",fa[j]);// puts(""); } int ans = 0; for(int i = 1; i <= n; i++) if(Find(i) == i) ans++; printf("%d\n",ans); } return 0;}
0 0