码迷,mamicode.com
首页 > 其他好文 > 详细

Atcoder Beginner Contest 147C(状态压缩)

时间:2019-12-21 12:06:51      阅读:69      评论:0      收藏:0      [点我收藏+]

标签:soft   mic   syn   include   its   忽略   lag   class   set   

最多15个人,用N个二进制的数字表示每个人的状态,然后检验。这串数字相当于已经把这些人的状态定了下来,如果和输入的情况不符则这串数字不正确,直接忽略,因为枚举了所有的情况,所以总有正确的,不必在错误的状态下找寻正确的人数。

 1 #define HAVE_STRUCT_TIMESPEC
 2 #include<bits/stdc++.h>
 3 using namespace std;
 4 int a[17][17],b[17][17];
 5 int xx[17];
 6 int num[17];
 7 int n;
 8 int check(int x){
 9     memset(num,0,sizeof(num));
10     int ans=0;
11     int cnt=1;
12     while(x){
13         if(x&1){
14             num[cnt]=1;
15             ++ans;
16         }
17         x/=2;
18         ++cnt;
19     }
20     int flag=0;
21     for(int i=1;i<=n;++i){
22         if(num[i]){
23             for(int j=1;j<=xx[i];++j){
24                 if(b[i][j]==1&&!num[a[i][j]])
25                     flag=1;
26                 else if(b[i][j]==0&&num[a[i][j]])
27                     flag=1;
28             }
29         }
30     }
31     if(!flag)
32         return ans;
33     return 0;
34 }
35 int main(){
36     ios::sync_with_stdio(false);
37     cin.tie(NULL);
38     cout.tie(NULL);
39     cin>>n;
40     for(int i=1;i<=n;++i){
41         cin>>xx[i];
42         for(int j=1;j<=xx[i];++j){
43             cin>>a[i][j]>>b[i][j];
44         }
45     }
46     int lastans=0;
47     for(int i=0;i<=(1<<n)-1;++i)
48         lastans=max(lastans,check(i));
49     cout<<lastans;
50     return 0;
51 }

Atcoder Beginner Contest 147C(状态压缩)

标签:soft   mic   syn   include   its   忽略   lag   class   set   

原文地址:https://www.cnblogs.com/ldudxy/p/12076125.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!