• 宁波多校(一) C题 期末考试的安排


    用二进制压缩表示每一门科目有多少班级要考

    之后枚举需要靠的科目,用二进制来控制一天之内能考的不冲突的科目

    值得一提的是,虽然这样对于每一天可能并不是最佳利用的,但是答案确是最优的  

    因为我们保证了最后的结果是不互相冲突的,如果日子能够压缩,那么其实代表某一天的科目能放到其他天,但是这样是不存在的,否则我们在之前就能判断。   

    #include<bits/stdc++.h>
    using namespace std;
    const int N=1e5+10;
    int a[N];
    int b[N];
    int vis[N];
    int main() {
        int t;
        cin>>t;
        while(t--){
            int n,q;
            memset(vis,0,sizeof vis);
            memset(a,0,sizeof a);
            cin>>n>>q;
            int i;
            int tmp=1;
            for(i=1;i<=n;i++){
                int m;
                cin>>m;
                for(int j=1;j<=m;j++){
                    int p;
                    cin>>p;
                    a[p]+=tmp;
                }
                tmp*=2;
            }
            int ans=0;
            for(i=1;i<25;i++){
                if(!vis[i]&&a[i]){
                    ans++;
                    int x=a[i];
                    for(int j=i+1;j<25;j++){
                        if(!vis[j]&&a[j]){
                            if((x&a[j])==0){
                                x+=a[j];
                                vis[j]=1;
                            }
                        }
                    }
                }
            }
            if(ans>q){
                cout<<"NO"<<endl;
            }
            else{
                cout<<"YES"<<endl;
            }
        }
    }
    View Code

                                                                                                                                                                            

  • 相关阅读:
    重写对象的compareTo方法
    java基础之----hbase
    java基础之----innodb存储引擎
    java基础之----mysql存储结构
    fastjson jsonArrsy 转 list ,list 转 jsonArray
    java基础之----elasticsearch(Java客服端搜索实例)
    java基础之----elasticsearch
    java基础之----RabbitMQ
    java基础之----kafka
    java基础之----zookeeper
  • 原文地址:https://www.cnblogs.com/ctyakwf/p/13252023.html
Copyright © 2020-2023  润新知