codeforces 868C - Qualification Rounds(构造)

Posted Bangbangbanana

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了codeforces 868C - Qualification Rounds(构造)相关的知识,希望对你有一定的参考价值。

原题链接:http://codeforces.com/problemset/problem/868/C

 

 

题意:有k个队伍参加比赛,比赛有n个预选的题目,有些队伍对已经事先知道了一些题目。问能不能选出若干个题,使没有队伍提前知道了半数以上的比赛题目。

 

思路:可以肯定的是,只要存在满足条件的选题方案,必定存在两道题,选上这两道之后也是满足条件的。因为k<=4,我们可以用二进制数记录题目的被提前知道的情况。所以,只要存在两个题目,对应的二进制数的异或结果为0,输出YES,否则输出NO。具体实现参看代码

 

AC代码:

#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
int num[32];
int main()
{
    int n,k;
    int m,p;
    scanf("%d %d", &n, &k);
    for(int i=0;i<n;i++){
        p=0;
        for(int j=0;j<k;j++){
            scanf("%d", &m);
            p^=m;
            p<<=1;
        }
        //cout<<p<<endl;
        num[p]++;
    }
    p=0;
    for(int i=0;i<k;i++){
        p=p^1;
        p<<=1;
    }
    bool flag=0;
    //cout<<int(2^15)<<endl;
    if(num[0])
        flag=1;
    for(int i=1;i<=p;i++){
        for(int j=1;j<=p;j++){
            if(!(i&j)&&(num[i]&&num[j])){
                flag=1;
                break;
            }
        }
    }
    if(flag)    
        printf("YES\n");
    else
        printf("NO\n");
    
}

 

以上是关于codeforces 868C - Qualification Rounds(构造)的主要内容,如果未能解决你的问题,请参考以下文章

codeforces 868C - Qualification Rounds(构造)

F - Qualification Rounds CodeForces - 868C 二进制

使用 ref-qualifiers 解决重载问题

使用 t4 Scaffolding 在 mvc4 中获取模型(TableName)的元数据

codeforces上怎么看测试数据

如何看codeforces做了多少题