PolandBall is playing a game with EnemyBall. The rules are simple. Players have to say Words in turns. You cannot say a word which was already said. PolandBall starts. The Ball which can’t say a new word loses.
You’re given two lists of words familiar to PolandBall and EnemyBall. Can you determine who wins the game, if both play optimally?
Input The first input line contains two integers n and m (1?≤?n,?m?≤?103) — number of words PolandBall and EnemyBall know, respectively.
Then n strings follow, one per line — words familiar to PolandBall.
Then m strings follow, one per line — words familiar to EnemyBall.
Note that one Ball cannot know a word more than once (strings are unique), but some words can be known by both players.
Each word is non-empty and consists of no more than 500 lowercase English alphabet letters.
Output In a single line of PRint the answer — “YES” if PolandBall wins and “NO” otherwise. Both Balls play optimally.
Example Input 5 1 polandball is a cool character nope Output YES Input 2 2 kremowka wadowicka kremowka wiedenska Output YES Input 1 2 a a b Output NO Note In the first example PolandBall knows much more words and wins effortlessly.
In the second example if PolandBall says kremowka first, then EnemyBall cannot use that word anymore. EnemyBall can only say wiedenska. PolandBall says wadowicka and wins.
兩個人輪流說單詞,用過的、重復的不能再用,誰先沒詞說誰先輸,水題,統計兩人擁有的相同詞匯,首先是總詞匯多的一方必定贏,然后詞匯量相同時,相同詞匯為奇數則先手贏,否則后手贏。
#include<iostream>#include<stdio.h>#include<algorithm>#include<string.h>#include<string>#include<map>#include<set>using namespace std;set<string> s;int n,m;int main(){ string str; cin>>n>>m; int same=0; for(int i=0;i<n;i++){ cin>>str; s.insert(str); } for(int i=0;i<m;i++){ cin>>str; if(s.count(str)!=0){same++;} } if(n>m){cout<<"YES";} else if(m>n){cout<<"NO";} else{ if(same%2==0){cout<<"NO";} else{cout<<"YES";} }return 0;}新聞熱點
疑難解答