zoukankan      html  css  js  c++  java
  • 宁波多校(一) 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

                                                                                                                                                                            

  • 相关阅读:
    oracle数据库登录连接很慢;kettle连接oracle 报 IO 错误,socket time out 问题解决记录
    装机攻略
    项目开发规范
    选项卡事件测试
    日常报错记录
    邮箱常用端口及协议
    JS制作二级联动
    使用JQuery对页面进行绑值
    IDEA 报错记录
    论文格式
  • 原文地址:https://www.cnblogs.com/ctyakwf/p/13252023.html
Copyright © 2011-2022 走看看