题解:

还是插头dp

代码:

  1. #include<cstdio>
  2. #include<cstring>
  3. #include<algorithm>
  4. #include<cmath>
  5. using namespace std;
  6. int gp[][],n,m;
  7. long long dp[][][<<];
  8. void DP()
  9. {
  10. memset(dp,,sizeof(dp));
  11. dp[][m][]=;
  12. for (int i=;i<=n;i++)
  13. {
  14. for (int j=;j<(<<m);j++)dp[i][][(j<<)]=dp[i-][m][j];
  15. for (int k=;k<=m;k++)
  16. {
  17. for(int sta=;sta<(<<(m+));sta++)
  18. {
  19. int y=<<k;
  20. int x=<<(k-);
  21. if (gp[i][k])
  22. {
  23. if((sta&x)!=&&(sta&y)!=)dp[i][k][sta]=dp[i][k-][sta-x-y];
  24. else if((sta&x)==&&(sta&y)==)dp[i][k][sta]=dp[i][k-][sta+x+y];
  25. else dp[i][k][sta]=dp[i][k-][sta^x^y]+dp[i][k-][sta];
  26. }
  27. else
  28. {
  29. if ((sta&x)==&&(sta&y)==)dp[i][k][sta]=dp[i][k-][sta];
  30. else dp[i][k][sta]=;
  31. }
  32. }
  33. }
  34. }
  35. printf("There are %I64d ways to eat the trees.\n",dp[n][m][]);
  36. }
  37. int main()
  38. {
  39. int c,cn=;
  40. scanf("%d",&c);
  41. while (c--)
  42. {
  43. cn++;
  44. scanf("%d%d",&n,&m);
  45. for (int i=;i<=n;i++)
  46. for (int j=;j<=m;j++)scanf("%d",&gp[i][j]);
  47. printf("Case %d: ",cn);
  48. DP();
  49. }
  50. return ;
  51. }

hdu1693的更多相关文章

  1. [入门向选讲] 插头DP:从零概念到入门 (例题:HDU1693 COGS1283 BZOJ2310 BZOJ2331)

    转载请注明原文地址:http://www.cnblogs.com/LadyLex/p/7326874.html 最近搞了一下插头DP的基础知识……这真的是一种很锻炼人的题型…… 每一道题的状态都不一样 ...

  2. HDU1693 Eat the Trees 插头dp

    原文链接http://www.cnblogs.com/zhouzhendong/p/8433484.html 题目传送门 - HDU1693 题意概括 多回路经过所有格子的方案数. 做法 最基础的插头 ...

  3. 【HDU1693】Eat the Trees(插头dp)

    [HDU1693]Eat the Trees(插头dp) 题面 HDU Vjudge 大概就是网格图上有些点不能走,现在要找到若干条不相交的哈密顿回路使得所有格子都恰好被走过一遍. 题解 这题的弱化版 ...

  4. hdu1693 Eat the Trees 【插头dp】

    题目链接 hdu1693 题解 插头\(dp\) 特点:范围小,网格图,连通性 轮廓线:已决策点和未决策点的分界线 插头:存在于网格之间,表示着网格建的信息,此题中表示两个网格间是否连边 状态表示:当 ...

  5. HDU1693 Eat the Trees —— 插头DP

    题目链接:https://vjudge.net/problem/HDU-1693 Eat the Trees Time Limit: 4000/2000 MS (Java/Others)    Mem ...

  6. hdu1693插头dp(多回路)

    题意:在n*m的矩阵中,有些格子有树,没有树的格子不能到达,找一条或多条回路,吃全然部的树,求有多少中方法. 这题是插头dp,刚刚学习,不是非常熟悉,研究了好几天才明确插头dp的方法,他们老是讲一些什 ...

  7. hdu1693:eat trees(插头dp)

    题目大意: 题目背景竟然是dota!屠夫打到大后期就没用了,,只能去吃树! 给一个n*m的地图,有些格子是不可到达的,要把所有可到达的格子的树都吃完,并且要走回路,求方案数 题解: 这题大概是最简单的 ...

  8. hdu1693 插头dp

    题意:给了一个矩阵图,要求使用回路把图中的树全部吃掉的方案树,没有树的点不能走,吃完了这个点也就没有了,走到哪吃到哪 用插头dp搞 #include <iostream> #include ...

  9. [HDU1693]Eat the Trees

    Description: 给出n*m的方格,有些格子不能铺线,其它格子必须铺,可以形成多个闭合回路.问有多少种铺法? Hint: \(n,m<=12\) Solution: 与原来单回路那题转移 ...

随机推荐

  1. HTML 标记 1

    1. 文件结构 <html>                   ----------------------开始 <head>          -------------- ...

  2. MYSQL的基本函数 (加密函数)

    AES_ENCRYPT(str,key)  返回用密钥key对字符串str利用高级加密标准算法加密后的结果,调用AES_ENCRYPT的结果是一个二进制字符串,以BLOB类型存储 AES_DECRYP ...

  3. ubuntu 安装 firefox 的 jre plugin

    https://www.java.com/en/download/help/enable_browser_ubuntu.xml Mozilla Firefox Become the root user ...

  4. Spring Boot入门第五天:使用JSP

    原文链接 1.在pom.xml文件中添加依赖: <!-- Servlet依赖 --> <dependency> <groupId>javax.servlet< ...

  5. C语言转义字符基础总结

    C语言转义字符总结 C语言中的转义字符,是字符常量中很特别的一类.初学者容易在这方面犯错误,比如说我. 错题1 答案:C解析:每一个转义字符具有一个长度,这个字符串中:\t, \x43, \', \ ...

  6. induced pluripotent stem cell (iPSC) 诱导性多能干细胞

    参考: 诱导性多能干细胞 Induced pluripotent stem cell Induced Pluripotent Stem Cells: Problems and Advantages w ...

  7. JSON和Serialize数据格式的对比

    1.相同点: 都是把其它数据类型转换为可传输的字符串 都是结构性数据 2.不同点: JSON比Serialize序列后的格式要简洁 Serialize序列化的数据格式保存数据原有类型 3.扩展 JSO ...

  8. canvas手机端绘图解决方案

    解决方案js:https://pan.baidu.com/s/1jIys2aU 我们使用canvas通常会遇到一个问题就是坐标系的问题,如果按象限来说,一般canvas是在第四象限,但是我们通常都喜欢 ...

  9. android--------Socket的简单了解

    Socket目录 Socket通信简介 Android与服务器的通信方式主要有两种,一是Http通信,一是Socket通信.两者的最大差异在于,http连接使用的是“请求—响应方式”,即在请求时建立连 ...

  10. php文件处理函数

    //basename的使用$path='test/abc.jpg'; echo basename($path);// echo '<br/>'; echo basename($path,' ...