题目大意:要求你将全部非障碍格子都走一遍,形成回路(能够多回路),问有多少种方法

解题思路:

參考基于连通性状态压缩的动态规划问题 - 陈丹琦

下面为代码

#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
#define N 12
#define S (1 << 12)
int n, m;
long long dp[N][N][S];
int cas = 1; void solve() {
scanf("%d%d", &n, &m);
memset(dp, 0, sizeof(dp)); int num;
dp[0][0][0] = 1;
for(int i = 0; i < n; i++) {
for(int j = 0; j < m; j++) {
scanf("%d", &num);
for(int k = 0; k < (1 << (m + 1)); k++) {
int left = k & (1 << m);
int up = k & (1 << j);
int l = (1 << m);
int u = (1 << j);
//假设是障碍
if(num == 0) {
if(!left && !up)
dp[i][j + 1][k] += dp[i][j][k];
continue;
}
//假设有左边那一个有右插头。上面那一个有下插头,那么当前格子仅仅能是L的镜像了,也就是左上型
if(left && up) {
dp[i][j + 1][k - l - u] += dp[i][j][k];
}//假设仅仅有左边那个有左插头。上面那个没有下插头,那么当前的可能有右插头,或者左下型插头
else if(left) {
dp[i][j + 1][k] += dp[i][j][k];
dp[i][j + 1][k - l + u] += dp[i][j][k];
}//假设仅仅有上面那个有下插头。左边那个没有右插头,那么当前的可能有下插头,或者上右型插头
else if(up) {//
dp[i][j + 1][k] += dp[i][j][k];
dp[i][j + 1][k - u + l] += dp[i][j][k];
}//假设上面没有下插头,左边没有右插头。那么仅仅能是下右型插头了
else {
dp[i][j + 1][k + l + u] += dp[i][j][k];
}
}
}
for(int j = 0; j < (1 << m); j++)
dp[i + 1][0][j] = dp[i][m][j];
}
printf("Case %d: There are %I64d ways to eat the trees.\n", cas++, dp[n][0][0]);
} int main() {
int test;
scanf("%d", &test);
while(test--) {
solve();
}
return 0;
}

HDU - 1693 Eat the Trees(多回路插头DP)的更多相关文章

  1. hdu 1693 Eat the Trees——插头DP

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=1693 第一道插头 DP ! 直接用二进制数表示状态即可. #include<cstdio> # ...

  2. HDU 1693 Eat the Trees(插头DP、棋盘哈密顿回路数)+ URAL 1519 Formula 1(插头DP、棋盘哈密顿单回路数)

    插头DP基础题的样子...输入N,M<=11,以及N*M的01矩阵,0(1)表示有(无)障碍物.输出哈密顿回路(可以多回路)方案数... 看了个ppt,画了下图...感觉还是挺有效的... 参考 ...

  3. HDU 1693 Eat the Trees(插头DP)

    题目链接 USACO 第6章,第一题是一个插头DP,无奈啊.从头看起,看了好久的陈丹琦的论文,表示木看懂... 大体知道思路之后,还是无法实现代码.. 此题是插头DP最最简单的一个,在一个n*m的棋盘 ...

  4. HDU 1693 Eat the Trees(插头DP,入门题)

    Problem Description Most of us know that in the game called DotA(Defense of the Ancient), Pudge is a ...

  5. HDU 1693 Eat the Trees (插头DP)

    题意:给一个n*m的矩阵,为1时代表空格子,为0时代表障碍格子,问如果不经过障碍格子,可以画一至多个圆的话,有多少种方案?(n<12,m<12) 思路: 这题不需要用到最小表示法以及括号表 ...

  6. HDU 1693 Eat the Trees ——插头DP

    [题目分析] 吃树. 直接插头DP,算是一道真正的入门题目. 0/1表示有没有插头 [代码] #include <cstdio> #include <cstring> #inc ...

  7. hdu 1693 : Eat the Trees 【插头dp 入门】

    题目链接 题意: 给出一个n*m大小的01矩阵,在其中画线连成封闭图形,其中对每一个值为1的方格,线要恰好穿入穿出共两次,对每一个值为0的方格,所画线不能经过. 参考资料: <基于连通性状态压缩 ...

  8. HDU 1693 Eat the Trees

    第一道(可能也是最后一道)插头dp.... 总算是领略了它的魅力... #include<iostream> #include<cstdio> #include<cstr ...

  9. 【HDU】1693 Eat the Trees

    http://acm.hdu.edu.cn/showproblem.php?pid=1693 题意:n×m的棋盘求简单回路(可以多条)覆盖整个棋盘的方案,障碍格不许摆放.(n,m<=11) #i ...

随机推荐

  1. packinfo-java的作用

    package-info.java 包的作用 1. 为标注在包上的Annotation提供便利 2. 声明包的私有类和常量 3. 提供包的整体注释说明   代码说明: package-info.jav ...

  2. javaweb学习总结(二十八)——JSTL标签库之核心标签

    一.JSTL标签库介绍 JSTL标签库的使用是为弥补html标签的不足,规范自定义标签的使用而诞生的.使用JSLT标签的目的就是不希望在jsp页面中出现java逻辑代码 二.JSTL标签库的分类 核心 ...

  3. ANDROID_MARS学习笔记_S01原始版_006_ListView

    一.代码1.xml(1)main.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayo ...

  4. Tomcat 6.0下配置HTTPS

    最近项目需要使用到https,所以回顾整理了一下,其实在tomcat的文档中已经有了详细描述,我们启动Tomcat后,可以在docs文档中找到 地址如下:http://localhost:8080/d ...

  5. Receving Transactions > No data found IQC无法接收PO采购物料

    Receving Transactions > No data found IQC无法接收PO采购物料 APP-PO-14094: No records meet your search cri ...

  6. php include include_once require require_once 的区别与联系

    一.require 与 include 的区别: The require() function is identical to include(), except that it handles er ...

  7. web网站加速之CDN(Content Delivery Network)技术原理

    在不同地域的用户访问网站的响应速度存在差异,为了提高用户访问的响应速度.优化现有Internet中信息的流动,需要在用户和服务器间加入中间层CDN. 使用户能以最快的速度,从最接近用户的地方获得所需的 ...

  8. WCF大数据量传输解决方案

    文章内容列表:1. 场景:2. 解决方案3. WCF契约与服务实现设计静态图4. WCF契约与服务实现设计详细说明6. 服务端启动服务代码:7. 客户端代码8.   WCF大数据量传输解决方案源码下载 ...

  9. CSS和JS标签style属性对照表

    盒子标签和属性对照 CSS语法(不区分大小写) JavaScript语法(区分大小写) border border border-bottom borderBottom border-bottom-c ...

  10. IIS中访问自己开发的Webservice site就自动停止,尝试重启IIS和重启服务器都不能解决。

    今天在加班的时候发现一个奇怪的问题,IIS里面我们自己开发的Webservice site一访问就自动停止.尝试重启IIS和重启服务器都不能解决.后台windows events报错信息是The Mo ...