本文已参加[新人创作礼]活动,一同开启创作之路
Offer 驾到,掘友接招!我正在参加2022春招打卡活动,点击检查活动概况。
题目描述
这是3月25日代码源div2的每日一题。
知识点:哈希表
饿饿 饭饭之暑假大狂欢 – 题目 – Daimayuan Online Judge
故事接着《饿饿 饭饭 2》,又过了几个月,暑假来啦!!!
这天,c和他的小伙伴们决定一同去游乐园玩,他们一天将游乐园的一切设备玩了个遍,乃至大摆锤,过山车他们还去了很屡次,愉快的时间总是很时间短的,很快时间就来到了晚上,可是你以为一天的娱乐韶光就这样结束了吗,那你就猜错啦。
晚上,游乐园晚上的party就开端啦,其中有一个游戏环节,赢的人能够得到免费的西瓜,饿到不可的c和他的小伙伴非常期望得到这个西瓜。
包括c和他的小伙伴,有t个玩家参加了这个游戏,每个玩家都有一张带有数字的卡片。第ii张卡片上有ni个数字,分别是m1,m2,…mn。
游戏过程中,主持人从袋子里一个一个地取出编号的球。 他用洪亮而明晰的声响大声念出球的编号,然后把球收起来。 假如玩家的卡片上有对应的数字,就能够将它划掉。 最先从他的卡片上划掉一切数字的人取胜。 假如多人同时从他们的卡片上划掉一切数字,那么这些人都不能赢得竞赛。 在游戏开端时,袋子里有 100 个球,编号从 1 到 100,一切球的编号都是不同的。
c偷偷知道了每个玩家的数字。 想请你确认每个玩家是否能够在最有利于他的状况下赢得竞赛。
输入格局
第一行给出一个数t,代表t个玩家。
接下来第二行到t+1行,每行第一个数为ni,代表这个人手中有n个卡片,接下来给出序列a1…an表明这个人所拥有的卡片的数字。
输出格局
输出t行,每一行给出第i个人在最有利的状况下是否能赢得竞赛,能够输出YES
, 不能够输出NO
。
数据范围
1≤t≤100,1≤n≤100,1≤mi≤100样例输入
3
1 1
3 2 4 1
2 10 11
样例输出
YES
NO
YES
问题剖析
想要有利的状况下自己胜出,也就是说选出的数都是自己有的,并且自己在第一个清空前不能有他人比自己先清空。
意思就是自己不能包括他人的全部数:他人不能是自己的子集。比如自己是1 3 5,他人是3 5,那么最好的状况也是他人和我一同清空,这样两边都不能赢,假如自己是1 3 5,他人是3 4,那我只要不删4就行了,这样就是我先赢。
那么咱们就记录每个玩家的牌的状况,然后判别咱们的牌是否完全包括其它玩家的牌,假如有一个完全包括那咱们就不能赢。
AC代码
#include<iostream>
using namespace std;
#include<vector>
#include<algorithm>
#include<math.h>
#include<set>
#include<numeric>
#include<string>
#include<string.h>
#include<iterator>
#include<map>
#include<unordered_map>
#include<stack>
#include<list>
#include<queue>
#include<iomanip>
#pragma GCC optimize(1)
#pragma GCC optimize(2)
#pragma GCC optimize(3,"Ofast","inline")
#define endl '\n';
typedef long long ll;
typedef pair<ll, ll>PII;
int mymap[101][101];
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
int t, n;
cin >> t;
for (int i = 0; i < t; i++)
{
cin >> n;
for (int j = 0; j < n; j++)
{
int num;
cin >> num;
mymap[i][num]=1;
}
}
for (int i = 0; i < t; i++)
{
bool flag = true;
for (int j = 0; j < t; j++)
{
if (i == j)continue;
bool st = false;
for (int k = 0; k <= 100; k++)
{
if (mymap[i][k] < mymap[j][k])
{
st = true;
break;
}
}
if (!st)
{
flag = false;
break;
}
}
if (!flag)
{
cout << "NO" << endl;
}
else cout << "YES" << endl;
}
return 0;
}