[POJ 2411]Mondriaan's Dream:状压DP
来源:互联网 发布:json串转json对象 编辑:程序博客网 时间:2024/05/17 06:57
点击这里查看原题
以往的做法是按行进行转移,需要预处理出各种状态间的转移。一种更快的做法是按格点进行转移,状态表示的是每个已被处理过的格点的下一行的状态。具体可以参考http://blog.csdn.net/sf____/article/details/15026397
/*User:SmallLanguage:C++Problem No.:2411*///#include<bits/stdc++.h>//POJ使用这个头文件会CE #include<stdio.h>#include<iostream>#include<iomanip>#include<string.h>#define ll long long#define inf 999999999using namespace std;int n,m,p,q;ll f[3][(1<<11)+5];void solve(){ memset(f,0,sizeof(f)); p=0,q=1; f[q][0]=1; int t=(1<<m); for(int i=0;i<n;i++){ for(int j=0;j<m;j++){ swap(p,q); memset(f[q],0,sizeof(f[q]));//滚动数组 for(int s=0;s<t;s++){ if(!f[p][s]) continue; f[q][s^(1<<j)]+=f[p][s];//纵向,若第j位不能放,则下一行可以放;若可以放,则下一行不能放 if(j&&(s&(1<<(j-1)))&&!(s&(1<<j)))//横向,把上一位的纵向摆放旋转过来变成横向 f[q][s^(1<<(j-1))]+=f[p][s]; } } } cout<<f[q][0]<<endl;}int main(){ freopen("data.in","r",stdin);// ios::sync_with_stdio(false); while(cin>>n>>m&&n+m) solve(); return 0;}
0 0
- POJ 2411 Mondriaan's Dream (状压DP)
- Mondriaan's Dream - POJ 2411 状压dp
- POJ 2411 Mondriaan's Dream (状压DP)
- poj 2411 Mondriaan's Dream 状压dp
- poj 2411 Mondriaan's Dream(状压dp)
- POJ 2411 Mondriaan's Dream 状压dp
- POJ 2411 Mondriaan's Dream ( 状压DP )
- Mondriaan's Dream POJ - 2411 状压DP
- POJ 2411 Mondriaan's Dream (状压dp)
- POJ 2411 Mondriaan's Dream 状压dp
- [POJ 2411]Mondriaan's Dream:状压DP
- POJ 2411 Mondriaan's Dream (状压DP)
- poj 2411 Mondriaan's Dream 【状压dp】
- poj 2411 Mondriaan's Dream dp
- poj 2411 Mondriaan's Dream 【dp】
- POJ 2411 Mondriaan's Dream(状压DP)
- poj 2411 Mondriaan's Dream(状压DP)
- poj 2411 Mondriaan's Dream 状压dp入门
- ssh终端访问linux主机乱码解决方案
- Linux系统访问windows共享目录
- 10g RAC库用rman 的方式备份并恢复…
- Hadoop伪分布式环境搭建+Ubuntu:16.04+hadoop-2.6.0
- Sunos内核版本对应的Solaris版本
- [POJ 2411]Mondriaan's Dream:状压DP
- 关于rman差异增量及累积增量的区别…
- JAVA操作文件的复制和重命名失败的原因
- Apache使用LDAP认证
- OERR: ORA-3137 "TTC protocol int…
- DBA的考核
- arp命令--arptables
- 执行scp命令时不需要输入用户密码
- CONFIGURE ARCHIVELOG DELETION PO…