B. Berland Bingo
题意:给你n个卡片,卡片上有m个不同的数字,这个游戏是随即的从袋子里面抽球,球上有数字1-100;如果第ith玩家比起他人卡片上的数字早读出来,就输出YES,有多个就输出NO。
思路:直接三重循环暴力跑一遍即可,这里我用的map数组计数加一个二维数组存方便遍历
#include<bits/stdc++.h> using namespace std; const int maxn=110; int a[maxn][maxn]; bool flag[maxn]; int main() { int n,i,j,t; cin>>n; map<int ,int >cnt[maxn]; for(i=0;i<n;i++) { cin>>a[0][i]; for(j=1;j<=a[0][i];j++) { cin>>a[j][i]; cnt[i][a[j][i]]++; } } for(i=0;i<n;i++) { for(j=0;j<n;j++) { if(i==j) continue; int sum=0; for(int k=1;k<=a[0][j];k++) { if(cnt[i][a[k][j]]!=0) sum++; } if(sum==a[0][i]) { if(a[0][i]==a[0][j]) { flag[i]=1; flag[j]=1; } else { if(a[0][i]>a[0][j]) { flag[i]=1; } else { flag[j]=1; } } } } } for(i=0;i<n;i++) { if(flag[i]==0) { cout<<"YES"<<endl; } else { cout<<"NO"<<endl; } } }