您的位置:首页 > 其它

cf 8VC Venture Cup 2017 B

2017-01-18 16:55 204 查看
题目描述:

B. PolandBall and Game

time limit per test1 second

memory limit per test256 megabytes

inputstandard input

outputstandard output

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.

Examples

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.

大值题意:

PolandBall 会n个单词。

EnemyBall 会m个单词。

从PolandBall开始,他们每人说一个单词,不能说以前说过的,也不能说别人说过的。

如果一个人没有单词可以说了,那么他就输了。

若PolandBall赢输出YES,否则输出NO。

思路分析:

很简单的一个博弈。

假设PolandBall和EnemyBall同时会的单词个数为K。

那么他们肯定先说彼此都会的单词。

我们只需要讨论k的奇偶性就行了。

若k为偶数,那么在n-k>m-k的时候PolandBall赢。

若k为奇数,那么在n-k>=m-k的时候PolandBall赢。

ac代码:

#include<bits/stdc++.h>
using namespace std;
string a[1005];
string b[1005];
int main()
{
ios::sync_with_stdio(false);
int n,m,i,j,k=0;
cin>>n>>m;
for(i=0;i<n;i++)
{
cin>>a[i];
}
for(j=0;j<m;j++)
{
cin>>b[j];
for(i=0;i<n;i++)
{
if(a[i]==b[j])
{
k++;
break;
}
}
}
//cout<<k<<endl;
if(k%2)
{
if(n-k>=m-k)
cout<<"YES"<<endl;
else
cout<<"NO"<<endl;
}
else
{
if(n-k>m-k)
cout<<"YES"<<endl;
else
cout<<"NO"<<endl;
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: