传送门

先坑着,等啥时候会了再来填坑

不得不说思路真的是很妙啊

 1 //minamoto
 2 #include<iostream>
 3 #include<cstdio>
 4 #include<cstring>
 5 #define ll long long
 6 using namespace std;
 7 #define getc() (p1==p2&&(p2=(p1=buf)+fread(buf,1,1<<21,stdin),p1==p2)?EOF:*p1++)
 8 char buf[1<<21],*p1=buf,*p2=buf;
 9 inline int read(){
10     #define num ch-'0'
11     char ch;bool flag=0;int res;
12     while(!isdigit(ch=getc()))
13     (ch=='-')&&(flag=true);
14     for(res=num;isdigit(ch=getc());res=res*10+num);
15     (flag)&&(res=-res);
16     #undef num
17     return res;
18 }
19 const int N=20;
20 int n,m,bin[N],mp[N][N];
21 ll f[N][N][(1<<12)+5];
22 void solve(int x,int y){
23     int plug1=bin[y-1],plug2=bin[y];
24     if(mp[x][y]){
25         for(int j=0;j<bin[m+1];++j){
26             f[x][y][j]+=f[x][y-1][j^plug1^plug2];
27             if(((j>>(y-1))&1)==((j>>y)&1)) continue;
28             f[x][y][j]+=f[x][y-1][j];
29         }
30     }
31     else{
32         for(int j=0;j<bin[m+1];++j){
33             if(!(j&plug1)&&!(j&plug2)) f[x][y][j]=f[x][y-1][j];
34             else f[x][y][j]=0;
35         }
36     }
37 }
38 int main(){
39 //    freopen("testdata.in","r",stdin);
40     int T=read();
41     bin[0]=1;for(int i=1;i<=15;++i) bin[i]=bin[i-1]<<1;
42     for(int t=1;t<=T;++t){
43         n=read(),m=read();
44         for(int i=1;i<=n;++i)
45         for(int j=1;j<=m;++j)
46         mp[i][j]=read();
47         memset(f,0,sizeof(f));
48         f[1][0][0]=1;
49         for(int i=1;i<=n;++i){
50             for(int j=1;j<=m;++j) solve(i,j);
51             if(i!=n) for(int j=0;j<bin[m];++j)
52                     f[i+1][0][j<<1]=f[i][m][j];
53         }
54         printf("Case %d: There are %lld ways to eat the trees.\n",t,f[n][m][0]);
55     }
56     return 0;
57 }

转载于:https://www.cnblogs.com/bztMinamoto/p/9656274.html

hdu1693Eat the Trees(插头dp)相关推荐

  1. HDU1693 Eat The Trees(插头dp)

    传送门:http://acm.hdu.edu.cn/showproblem.php?pid=1693 Eat the Trees Time Limit: 4000/2000 MS (Java/Othe ...

  2. HDU1693 Eat the Trees —— 插头DP

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

  3. hdu 1693 Eat the Trees 插头dp

    每一个点可向上下左右四个方向连边,这就是插头. 每一条轮廓线切开的是当前已确定的点的未确定的点,其经过的插头有m个竖着的,一个横着的,懒得画图了.. 每一次转移就是将左边的变到下面,上面的变到左边,每 ...

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

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

  5. URAL1519 Formula 1 —— 插头DP

    题目链接:https://vjudge.net/problem/URAL-1519 1519. Formula 1 Time limit: 1.0 second Memory limit: 64 MB ...

  6. 插头DP题目泛做(为了对应WYD的课件)

    题目1:BZOJ 1814 URAL 1519 Formula 1 题目大意:给定一个N*M的棋盘,上面有障碍格子.求一个经过所有非障碍格子形成的回路的数量. 插头DP入门题.记录连通分量. 1 #i ...

  7. bzoj1814 Ural 1519 Formula 1(插头dp模板题)

    1814: Ural 1519 Formula 1 Time Limit: 1 Sec  Memory Limit: 64 MB Submit: 924  Solved: 351 [Submit][S ...

  8. HDU4084 插头dp

    题意:给定一个图,0是不能放的,然后现在有1X1和1X2方块,最后铺满该图,使得1X1使用次数在C到D之间,1X2次数随便,问有几种放法 思路:插头DP或轮廓线,多加一维DP讨论就可以 注意插头DP状 ...

  9. POJ3133(插头dp)

    传送门:http://poj.org/problem?id=3133 Manhattan Wiring Time Limit: 5000MS   Memory Limit: 65536K       ...

  10. P3272 [SCOI2011]地板(插头DP)

    [题面链接] https://www.luogu.org/problemnew/show/P3272 [题目描述] 有一个矩阵,有些点必须放,有些点不能放,用一些L型的图形放满,求方案数 [题解] ( ...

最新文章

  1. 单位斜变函数matlab,实验二 用MATLAB实现线性系统的时域分析
  2. centos6.4 搭建knowlededgeroot-1.0.4知识库平台
  3. CodeForces - 1400G Mercenaries(容斥原理)
  4. Redis缓存击穿和缓存雪崩、缓存穿透以及对应的解决方案
  5. 两种参数类型_深入理解Java中方法的参数传递机制
  6. Python模拟Linux的Crontab, 写个任务计划需求
  7. CoreAnimation —— CAReplicatorLayer(拷贝图层)
  8. 2019春第一课程设计报告
  9. linux android开发环境搭建
  10. html中url路径是什么意思,url是什么意思?
  11. 详解linux运维工程师入门级必备技能
  12. php管理员权限表,权限表的建立
  13. Server Develop (四) select实现非阻塞sever
  14. 移动警务通GIS应用系统建设方案
  15. Django中的swagger文档
  16. 一分钟给大量视频褪色并加马赛克
  17. 什么是小规模纳税人、小型微利企业、小微企业
  18. React项目中提示caniuse-lite已过时,建议更新
  19. js 正则校验 长数字 电话号码 银行卡号
  20. uvm_objection/uvm_objection_events/test_done_objection/callbacks_objection/objection_callback

热门文章

  1. 车道检测--VPGNet: Vanishing Point Guided Network for Lane and Road Marking Detection and Recognition
  2. 重温目标检测--Fast R-CNN
  3. python同名包_可以使用两个同名的Python包吗?
  4. mysql的proxy机制_MySQL Proxy工作机制浅析
  5. SpringBoot-400-Bad-Request(Request-header-is-too-large)
  6. linux启动时间极限优化,Linux启动时间的极限优化
  7. java.lang.NullPointerException空指针问题
  8. iOS自动化测试之Appium的安装和使用
  9. 图像的均值和方差python_python-绘制均值和标准差
  10. python怎么重启内核_解决jupyter运行pyqt代码内核重启的问题