• codeforces 868C


    原题链接: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
    ");
        else
            printf("NO
    ");
        
    }
  • 相关阅读:
    spring mvc poi excel
    select onchange事件的使用
    eclipse下svn的分支与合并指南
    jquery_final
    ListView
    资源的使用
    Notification
    单选
    复选框
    调试
  • 原文地址:https://www.cnblogs.com/MasterSpark/p/7659056.html
Copyright © 2020-2023  润新知