• 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

    觉得 差不多. =_=

    just follow your heart
  • 相关阅读:
    slf4j日志框架绑定机制
    Btrace使用入门
    JVM反调调用优化,导致发生大量异常时log4j2线程阻塞
    [转载]Javassist 使用指南(三)
    [转载]Javassist 使用指南(二)
    [转载]Javassist 使用指南(一)
    数组升序排序的方法Arrays.sort();的应用
    copyOfRange的应用
    copyOf数组复制方法的使用(数组扩容练习)
    binarySearch(int[] a,int fromIndex,int toIndex, int key)的用法
  • 原文地址:https://www.cnblogs.com/radical/p/4096947.html
Copyright © 2020-2023  润新知