cf练习
作者:互联网
(模拟,集合,文氏图)Groups(https://codeforces.com/problemset/problem/1598/B)
题意:n个学生(n为偶数),每个学生都有5个数组来表示他们周一到周五有没有空,问能否将这n个学生分成同样大小的两组,一组再星期a上课,另一组在
星期b上课(a != b)
方法:枚举两个两个日子i, j, 求只在i有空的学生数p和只在j有空的学生数q,以及i和j都有空的学生数r,如果p <= n / 2 && q <= n / 2 && p + q + r == n则说明可以
#include<iostream>
using namespace std;
int g[1010][5];
void solve(){
int n;
cin >> n;
for(int i = 0; i < n; i ++)
for(int j = 0; j < 5; j ++)
cin >> g[i][j];
for(int i = 0; i < 5; i ++)
for(int j = i + 1; j < 5; j ++){
int a = 0, b = 0, c = 0;
for(int k = 0; k < n; k ++)
if(g[k][i] && g[k][j]) c ++;
else if(g[k][i]) a ++;
else if(g[k][j]) b ++;
if(a <= n / 2 && b <= n / 2 && a + b + c == n){
cout << "YES" << endl;
return;
}
}
cout << "NO" << endl;
}
int main(){
int t;
cin >> t;
while(t --) solve();
}
标签:有空,cin,int,练习,cf,学生,++,else 来源: https://www.cnblogs.com/tomori/p/15594658.html