第一道(可能也是最后一道)插头dp。。。。

总算是领略了它的魅力。。。

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
long long t,n,m,map[][],dp[][][(<<)+];
void work(long long x)
{
scanf("%I64d%I64d",&n,&m);
for (long long i=;i<=n;i++)
for (long long j=;j<=m;j++)
scanf("%I64d",&map[i][j]);
memset(dp,,sizeof(dp));
dp[][m][]=;
for (long long i=;i<=n;i++)
{
for (long long j=;j<(<<m);j++) dp[i][][j<<]=dp[i-][m][j];
for (long long j=;j<=m;j++)
for (long long k=;k<(<<(m+));k++)
{
long long r1=(<<(j-)),r2=(<<j);
if (map[i][j])
{
if ((k&r1) && (k&r2)) dp[i][j][k]=dp[i][j-][k^r1^r2];
else if ((!(k&r1)) && (!(k&r2))) dp[i][j][k]=dp[i][j-][k+r1+r2];
else dp[i][j][k]=dp[i][j-][k]+dp[i][j-][k^r1^r2];
}
else
{
if ((!(k&r1)) && (!(k&r2))) dp[i][j][k]=dp[i][j-][k];
else dp[i][j][k]=;
}
}
}
printf("Case %I64d: There are %I64d ways to eat the trees.\n",x,dp[n][m][]);
}
int main()
{
scanf("%I64d",&t);
for (long long i=;i<=t;i++)
work(i);
return ;
}

HDU 1693 Eat the Trees的更多相关文章

  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)

    题目大意:要求你将全部非障碍格子都走一遍,形成回路(能够多回路),问有多少种方法 解题思路: 參考基于连通性状态压缩的动态规划问题 - 陈丹琦 下面为代码 #include<cstdio> ...

  5. 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 ...

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

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

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

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

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

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

  9. 【HDU】1693 Eat the Trees

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

随机推荐

  1. [bootstrap] 实用的bootstrap模版下载

    https://shapebootstrap.net/ http://shapebootstrap.net/item/1524915-adminlte-dashboard-and-control-pa ...

  2. 1029c语言文法2理解

    program → external_declaration | program external_declaration <程序>→ <外部声明>|<程序>< ...

  3. HDU 4122

    Alice's mooncake shop Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Ot ...

  4. ios基础篇(六)——UITextView的常用方法及技巧

    上篇说到了UITextField,我们先来说说UITextView和UITextField的不同: UITextView支持多行输入; UITextFiled只支持单行; UITextView没有pl ...

  5. asp.net core StaticFiles中间件修改wwwroot

    new StaticFileOptions() { FileProvider = new PhysicalFileProvider(Path.Combine(Directory.GetCurrentD ...

  6. ANGULARJS 动态编译添加到dom中

    在使用angularjs 时,希望通过动态构建angular模版,再通过angular进行展示. 使用 方法如下: <html ng-app="app"> <he ...

  7. 解决ACTIVITI流程图设置字体不生效的问题

    在ACTIVITI 5.15的版本中,有一个设置流程图的字体配置. 配置如下: <bean id="processEngineConfiguration" class=&qu ...

  8. 碰到sshd连接不上linux时的解决办法

    1,首先更改ssh配置,可以是ssh端口连接不上服务器 cd /etc/ssh/sshd_config vi !$ Port 52113 //ssh默认的连接端口, 改为别人不知道的端口 Permit ...

  9. S1 : 函数

    一.做为值的函数 例如,假设有一个对象数组,我们想要根据某个对象属性对数组进行排序.而传递给数组sort()方法的比较函数要接收两个参数,即要比较的值.可是,我们需要一种方式来指明按照哪个属性来排序. ...

  10. POJ 2594 传递闭包的最小路径覆盖

    Treasure Exploration Time Limit: 6000MS   Memory Limit: 65536K Total Submissions: 7171   Accepted: 2 ...