zoukankan      html  css  js  c++  java
  • 玉米田复习

     1 #include<bits/stdc++.h>
     2 #define Set int
     3 using namespace std;
     4 const int mod=1e8;
     5 int n,m;
     6 Set cur[15];
     7 Set state[1500];
     8 int cnt,ans;
     9 int f[15][1500];
    10  
    11 inline void first_deal()
    12 {
    13     Set sum=1<<n;
    14     for(Set i=0;i<sum;i++)
    15         if( !(i&(i<<1)) ) state[++cnt]=i; 
    16 }
    17  
    18 inline bool fit(int x,int k)
    19 {
    20     return !(state[x]&(~cur[k]));
    21 } 
    22  
    23 int main()
    24 {
    25     scanf("%d%d",&m,&n);
    26     int x;
    27     first_deal(); 
    28     for(int i=1;i<=m;i++)
    29         for(int j=n-1;j>=0;j--){
    30             scanf("%d",&x);
    31             if(x) cur[i]|=(1<<j);//把can的第j位设置为0; 
    32         }
    33     for(Set i=1;i<=cnt;i++)
    34         if(fit(i,1)) f[1][i]=true;
    35     for(int i=2;i<=m;i++)
    36         for(int j=1;j<=cnt;j++)  //枚举当前状态编号 
    37         {
    38             if(!fit(j,i)) continue;
    39             for(int k=1;k<=cnt;k++) //枚举上一层可行状态编号 
    40             {
    41                 if(!fit(k,i-1)) continue;
    42                 if(!(state[j]&state[k])) 
    43                     f[i][j]=(f[i][j]+f[i-1][k])%mod;
    44             }
    45         }
    46     for(int i=1;i<=cnt;i++)
    47         ans=(ans+f[m][i])%mod;
    48     printf("%d",ans);
    49     return 0;
    50 }
  • 相关阅读:
    查看JAVA占用CPU高的线程日志
    行为面试法(STAR)
    下载mysql document
    win10 子系统ubuntu中文乱码
    java 排序
    进制
    开始转型学习java
    java Collections工具类
    java Map实例
    java Map
  • 原文地址:https://www.cnblogs.com/mzg1805/p/10303685.html
Copyright © 2011-2022 走看看