Description

题意:在n*m(1<=N, M<=11 )的矩阵中,有些格子有树,没有树的格子不能到达,找一条或多条回路,吃完所有的树,求有多少种方法。

Solution

插头DP入门题,\(dp[i][j][k]\)表示\(G_{i,j}\)且轮廓线状态为\(k\)时的方案数

转移有6种,

Code

#include <cstdio>
#include <cstring>
#include <algorithm>
#define N 14
#define ll long long
using namespace std; int T,n,m,g[N][N];
ll dp[N][N][1<<N]; inline int read(){
int x=0,f=1;char ch=getchar();
while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}
return x*f;
} int main(){
T=read();
for(int ca=1;ca<=T;++ca){
memset(g,0,sizeof(g));
memset(dp,0,sizeof(dp));
n=read(),m=read();
for(int i=1;i<=n;++i)for(int j=1;j<=m;++j)g[i][j]=read(); dp[0][m][0]=1;
for(int i=1;i<=n;++i){
for(int j=0;j<(1<<m);++j)//轮廓线最后一个一定是1,所以(1<<m)
dp[i][0][j<<1]=dp[i-1][m][j];
for(int j=1;j<=m;++j)
for(int S=0;S<(1<<(m+1));++S){//状态有m+1位
int x=1<<(j-1),y=1<<j;
if(g[i][j]){
if((S&x)!=0&&(S&y)!=0)//不是(==1)!,是(!=0)
dp[i][j][S]=dp[i][j-1][S-x-y];
else if((S&x)==0&&(S&y)==0)
dp[i][j][S]=dp[i][j-1][S+x+y];
else dp[i][j][S]=dp[i][j-1][S^x^y]+dp[i][j-1][S];
}else {
if(!(S&x)&&!(S&y))
dp[i][j][S]=dp[i][j-1][S];
else dp[i][j][S]=0;
}
}
}
printf("Case %d: There are %lld ways to eat the trees.\n",ca,dp[n][m][0]);
}
return 0;
}

最新文章

  1. 十一、Swing
  2. Android项目——网络图片查看器
  3. oracle导入导出数据库和创建表空间和用户
  4. Quartz管理类
  5. HW5.21
  6. cloudCompute
  7. Django学习(二) Django框架简单搭建
  8. leetcode Integer to Roman python
  9. Android开源项目总结
  10. redhat 安装GCC-4.8.3
  11. vi的基本操作
  12. RGBA 和 opacity的区别
  13. linux远程传输
  14. P4137 Rmq Problem / mex (莫队)
  15. UEditor上传自定义文件夹
  16. win10版office365激活序列码
  17. 【读书笔记】深入应用C++11代码优化与工业级应用 读书笔记01
  18. iOS UI调试神器,插件injection for Xcode使用方法
  19. python机器学习sklearn 岭回归(Ridge、RidgeCV)
  20. LeetCode 544----Output Contest Matches

热门文章

  1. js和JQuery中offset等属性对比
  2. Don&#39;t let anyone tell you different.
  3. HTML 笔记之 HTML 元素的概念
  4. Mysql数据库操作语句总结(一)
  5. Cocos2d-x v3.1 核心类Director,Scene,Layer和Sprite(六)
  6. 微信小程序开发入门首选
  7. 【MATLAB】画平行于坐标轴的曲线
  8. zabbix-3.4 触发器
  9. intellij idea中设置SVN插件教程
  10. ffmpeg —— 添加水印