Corn Fields POJ
来源:互联网 发布:大富豪棋牌源码架设 编辑:程序博客网 时间:2024/06/04 18:51
题意:有n*m大的一个地方,1表示土地肥沃可以种植物,0表示不能种植物,问:在不许有两个植物相邻的情况下,有多少种放置的方法。
我们用数字0,1来表示各个行的状态,也就是植物的放置与否,而这些0,1的组成是可以转换为整形存到数组中的,所以就类似于对于一个集合的操作就是整形的操作。转移很显然,就是d[i][j]+=d[i-1][k] k是与j合法的摆放情况
这一题,重点在于不合法的位置判断。
一个是某一行是否合法,另一个是某一行与其前一行是否合法。
第一个的话,判断两种情况,同一行是否有相邻的1出现,我们只需计算(x*2)&x是否为0就可以了,相当于左移一位,是0的话合法
另一个,是否符合种植要求,要求是0的位,当前行不能为1,要求是1的位,当前行可以为1,或0,那么两者&一下,看是否 还是等于当前行
第二个,就容易了,与上一行不能出现同一位都是1,那么&一下,是0就是合法的
#include <iostream> #include <cstdio> #include <ctime> #include <cstring> #include <algorithm> #include <vector> #include <map> #include <cmath> #include <set> #include <queue> using namespace std; typedef long long ll; const int INF=1e9+100; const int mod=1e8; int d[13][5005],a[13];bool judge(int x,int y){ if((x&y)!=y) return true; if(((y*2)&y)!=0) return true; return false;}int main(){ //freopen("out.txt","w",stdout); int n,m,x; while(scanf("%d %d",&n,&m)!=EOF){ for(int i=1;i<=n;i++){ a[i]=0; for(int j=1;j<=m;j++){ scanf("%d",&x); a[i]=a[i]*2+x; } } memset(d,0,sizeof(d)); d[0][0]=1; for(int i=1;i<=n;i++){ for(int j=0;j<(1<<m);j++){//枚举当前行的状态 if(judge(a[i],j)) continue; for(int k=0;k<(1<<m);k++){ if((j&k)!=0) continue; d[i][j]=(1LL*d[i][j]+d[i-1][k])%mod; } } } int ans=0; for(int i=0;i<(1<<m);i++) ans=(ans+d[n][i])%mod; printf("%d\n",ans ); } return 0;}
阅读全文
0 0
- poj 3254Corn Fields
- POJ 3254 Corn Fields
- poj 3254 Corn Fields
- POJ 3254 Corn Fields
- poj 3254---Corn Fields
- poj 3254 Corn Fields
- poj 3254 Corn Fields
- POJ 3254 Corn Fields
- (poj)3254 Corn Fields
- poj 3254 Corn Fields
- POJ 3254 Corn Fields
- poj 3254 Corn Fields
- POJ 3254 Corn Fields
- poj 3254 Corn Fields
- POJ 3254 Corn Fields
- POJ 3254 Corn Fields
- poj-3254-Corn Fields
- poj 3254 Corn Fields
- 47.排列组合第二弹
- 基于zookeeper的线程及其zookeeper简介
- 简单的table切换,记录
- MYSQL数据库函数集合
- 解决keep-alive缓存问题
- Corn Fields POJ
- 查询数据库内存
- Hadoop中mapred.child.java.opds参数意义
- ZooKeeper介绍
- Java多线程总结(一):Java两种创建线程方式的比较
- Android7.0系统中在app内部安装apk时失败或者报错FileUriExposedException
- 如何定义使用PHP 命名空间?
- 仿微信语音图标拖动并松开时实现自动贴边
- js数组的方法