10 条题解

  • 1
    @ 2026-7-13 18:05:50

    想当年(2023)做出这道题之后张正标老师请我们吃了披萨哈哈哈,现在都2026年了,我也老了(13岁

    #include<cmath>
    #include<iomanip>
    #include <string>
    #include <algorithm>
    #define LL long long
    using namespace std;
    int INF=0x3f3f3f3f;
    const int N=1e5+10;
    int t,n,z,c,ans=1;//000000也行
    int xz[62];
    bool dzy(int m)
    {
        for(int i=1;i<=n;i++)
        {
            if((m&xz[i])==xz[i])
                return 0;
        }
        return 1;
    }
    int main()
    {
        cin>>t>>n;
        for(int i=1;i<=n;i++)
        {
            cin>>z;
            for(int j=1;j<=z;j++)
            {
                cin>>c;
                xz[i]=xz[i]|(1<<(c-1));
                
            }
        }
        for(int i=1;i<=(1<<t)-1;i++)
        {
            if(dzy(i))
                ans++;
        }
        cout<<ans;
        return 0;
    }
    
    
    • 1
      @ 2026-2-27 15:40:26

      包AC

      #include<bits/stdc++.h>
      using namespace std;
      int n,t,xz[100005],x,z,ans;
      bool p(int x)
      {
      	for(int i=1;i<=n;i++)
      	{
      		if((x&xz[i])==xz[i])return 0;
      	}
      	return 1;
      }
      signed main()
      {
      	ios::sync_with_stdio(0);
      	cin.tie(0);
      	cin>>t>>n;
      	for(int i=1;i<=n;i++)
      	{
      		cin>>x;
      		while(x--)
      		{
      			cin>>z;
      			xz[i]=xz[i]|(1<<(z-1));
      		}
      	}
      	for(int i=0;i<(1<<t);i++)
      	{
      		if(p(i))ans++;
      	}
      	cout<<ans;
      	return 0;
      }
      
      • -1
        @ 2024-4-15 20:52:21

        #include <bits/stdc++.h> using namespace std; int xz[114524],cnt=0; int t,n,z,x;; int check(int x){ for(int i=1;i<=n;i++){ if((xz[i]&x)==xz[i]){ return 0; } } return 1; } int main(){ // 1 1 1 1 1 1 6个原料都用 cin>>t>>n; for(int i=1;i<=n;i++){ cin>>z;//输入限制 for(int j=1;j<=z;j++){ cin>>x;//当前的限制 xz[i]=xz[i] | 1<<(x-1); } } for(int i=0;i<(1<<t);i++){ // 枚举 1- 11111 if(check(i)) cnt++; } cout<<cnt; }

        • -1
          @ 2024-4-15 20:51:42
          using namespace std;
          int xz[10000],cnt=0,t,n,z,x;
          int check(int x){
          for(int i=1;i<=n;i++){
          if((xz[i]&x)==xz[i]){
          return 0;
          }
          }
          return 1;
          }
          int main(){
          
          cin>>t>>n;
          for(int i=1;i<=n;i++){
          	cin>>z;
          	for(int j=1;j<=z;j++){
          		cin>>x;
          		xz[i]=xz[i]|1<<(x-1);
          	}
          }
          for(int i=0;i<(1<<t);i++){
          	if(check(i)){
          		cnt++;
          	}
          }
          cout<<cnt;
          }
          
          • -1
            @ 2024-4-15 20:51:16

            #include<bits/stdc++.h> using namespace std; int xz[10000],cnt=0,t,n,z,x; int check(int x){ for(int i=1;i<=n;i++){ if((xz[i]&x)==xz[i]){ return 0; } } return 1; } int main(){ cin>>t>>n; for(int i=1;i<=n;i++){ cin>>z; for(int j=1;j<=z;j++){ cin>>x; xz[i]=xz[i]|1<<(x-1); } } for(int i=0;i<(1<<t);i++){ if(check(i)){ cnt++; } } cout<<cnt;

            }

            • -1
              @ 2024-4-15 20:50:47
              #include<bits/stdc++.h>
              using namespace std;
              int xz[10000],cnt=0;
              int t,n,z,x;
              int check(int x)
              {
              	for(int i=1;i<=n;i++)
              	{
              		if((xz[i]&x)==xz[i])
              		{
              			return 0;
              		}
              	}
              	return 1;
              }
              int main()
              {
              	cin>>t>>n;
              	for(int i=1;i<=n;i++)
              	{
              		cin>>z;
              		for(int j=1;j<=z;j++)
              		{
              			cin>>x;
              			xz[i]=xz[i] | 1<<(x-1);
              		}
              	}
              	for(int i=0;i<(1<<t);i++)
              	{
              		if(check(i))
              		{
              			cnt++;
              		}
              	}
              	cout<<cnt;
              }
              
              • -1
                @ 2024-4-15 20:49:46

                #include<bits/stdc++.h> using namespace std; int xz[10000],cnt=0,t,n,z,x; int check(int x){ for(int i=1;i<=n;i++){ if((xz[i]&x)==xz[i]){ return 0; } } return 1; } int main(){

                cin>>t>>n;
                for(int i=1;i<=n;i++){
                	cin>>z;
                	for(int j=1;j<=z;j++){
                		cin>>x;
                		xz[i]=xz[i]|1<<(x-1);
                	}
                }
                for(int i=0;i<(1<<t);i++){
                	if(check(i)){
                		cnt++;
                	}
                }
                cout<<cnt;
                

                }

                • -1
                  @ 2024-4-15 20:49:44

                  #include<bits/stdc++.h> using namespace std; int xz[10000],cnt=0; int t,n,z,x; int check(int x) { for(int i=1;i<=n;i++) { if((xz[i]&x)==xz[i]) { return 0; } } return 1; } int main() { cin>>t>>n; for(int i=1;i<=n;i++) { cin>>z; for(int j=1;j<=z;j++) { cin>>x; xz[i]=xz[i] | 1<<(x-1); } } for(int i=0;i<(1<<t);i++) { if(check(i)) { cnt++; } } cout<<cnt; }

                  • -1
                    @ 2024-4-15 20:49:26

                    #include<bits/stdc++.h> using namespace std; int xz[10000],cnt=0,t,n,z,x; int check(int x){ for(int i=1;i<=n;i++){ if((xz[i]&x)==xz[i]){ return 0; } } return 1; } int main(){

                    cin>>t>>n;
                    for(int i=1;i<=n;i++){
                    	cin>>z;
                    	for(int j=1;j<=z;j++){
                    		cin>>x;
                    		xz[i]=xz[i]|1<<(x-1);
                    	}
                    }
                    for(int i=0;i<(1<<t);i++){
                    	if(check(i)){
                    		cnt++;
                    	}
                    }
                    cout<<cnt;
                    

                    }

                    • -1
                      @ 2024-4-15 20:49:23
                      using namespace std;
                      int xz[10000],cnt=0;
                      int t,n,z,x;
                      int check(int x){
                      	for(int i=1;i<=n;i++){
                      		if((xz[i]&x)==xz[i]){
                      			return 0;
                      		}
                      	}
                      	return 1;
                      }
                      void quicksort(int a[],int left,int right){
                      	if(left>=right){
                      		return ;
                      	}
                      	int t=a[left];
                      	int i=left,j=right;
                      	while(i<j){
                      		while(i<j&&a[j]>=t) j--;
                      		while(i<j&&a[i]<=t) i++;
                      		if(i<j){
                      			swap(a[i],a[j]);
                      		}
                      	}
                      	swap(a[i],a[left]);
                      	quicksort(a,left,i-1);
                      	quicksort(a,i+1,right);
                      }
                      int main(){
                      
                      	cin>>t>>n;
                      	for(int i=1;i<=n;i++){
                      		cin>>z;
                      		for(int j=1;j<=z;j++){
                      			cin>>x;
                      			xz[i]=xz[i] | 1<<(x-1);
                      		}
                      	}
                      	for(int i=0;i<(1<<t);i++){
                      		if(check(i)){
                      			cnt++;
                      		}
                      	}
                      	cout<<cnt;
                      
                      
                      	return 0;
                      }
                      
                      
                      
                      • 1

                      信息

                      ID
                      2549
                      时间
                      1000ms
                      内存
                      256MiB
                      难度
                      5
                      标签
                      递交数
                      257
                      已通过
                      95
                      上传者