hdu--3006--不知为何wa

就是一个 位运算状态表示的题 以为很水的啊... 自己写出来的一直 WA 和别人AC的对拍 几组test也都是对的

我也是醉了

 

//我WA的

 1 #include <iostream>
 2 #include <cstring>
 3 #include <set>
 4 using namespace std;
 5 
 6 int n;
 7 set<int>s;
 8 int bit[16];
 9 
10 void dfs( int Id , int ans )
11 {
12     s.insert( ans );
13     if( Id==n-1 )
14     {
15         return ;
16     }
17     for( int i = Id+1 ; i<=n-1 ; i++ )
18     {
19         dfs( i , ans|bit[i] );
20     }
21 }
22     
23 int main()
24 {
25     cin.sync_with_stdio(false);
26     int m , k , num;
27     while( cin >> n >> m )
28     {
29         s.clear();
30         memset( bit , 0 , sizeof(bit) );
31         for( int i = 0 ; i<n ; i++ )
32         {
33             cin >> k;
34             for( int j = 0 ; j<k ; j++ )
35             {
36                 cin >> num;
37                 bit[i] |= (1<<num);
38             }
39             s.insert( bit[i] );
40         }
41         for( int i = 0 ; i<n ; i++ )
42         {
43             dfs( i , bit[i] );
44         }
45         cout << s.size( ) << endl;
46     }
47     return 0;
48 }
View Code

//AC的

 1 #include <iostream>
 2 #include <cstring>
 3 using namespace std;
 4 
 5 bool bit[(1<<16)];
 6 
 7 int main()
 8 {
 9     int n , m , k , temp , num , ans;
10     while( cin >> n >> m )
11     {
12         ans = 0;
13         memset( bit , false , sizeof(bit) );
14         for( int i = 0 ; i<n ; i++ )
15         {
16             cin >> k ;
17             temp = 0;
18             for( int j = 0 ; j<k ; j++ )
19             {
20                 cin >> num;
21                 temp |= (1<<num);
22             }
23             bit[temp] = true;
24             for( int j = 1 ; j<( 1<<(m+1) ); j++ )
25             {
26                 if( bit[j] )
27                 {
28                     bit[ temp|j ] = true;
29                 }
30             }
31         }
32         for( int i = 1 ; i<( 1<<(m+1) ) ; i++ )
33         {
34             if( bit[i] )
35             {
36                 ++ ans;
37             }
38         }
39         cout << ans << endl;
40     }
41     return 0;
42 }
View Code

 

觉得 差不多. =_=

 

posted @ 2014-11-14 12:35  radical  阅读(120)  评论(0编辑  收藏  举报