题意:3 * N的格子 有一些点是坏的 用1X1和1X2的砖铺有多少种方法

题解:重新学了下轮廓线 写的很舒服

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;int n, m;
int vis[30][5];
ll dp[25][1 << 3];void dfs(int num, int i, int state, int nex)
{if(num == 3){dp[i + 1][nex] += dp[i][state];return;}if(vis[i][num + 1] || (state & (1 << num))) dfs(num + 1, i, state, nex);else{dfs(num + 1, i, state, nex); //填1x1if(!vis[i + 1][num + 1] && !(nex & (1 << num)))dfs(num + 1, i, state, nex | (1 << num));   //竖着填1X2if(num + 2 <= 3 && !vis[i][num + 2] && !(state & (1 << (num + 1))))dfs(num + 2, i, state, nex); // 横着填1X2
    }
}int main()
{scanf("%d%d", &n, &m);for(int i = 1; i <= m; i++){double x, y;scanf("%lf%lf", &x, &y);vis[(int)x + 1][(int)y + 1] = 1;}dp[1][0] = 1LL;for(int i = 1; i <= n; i++)for(int st = 0; st < 8; st++)if(dp[i][st] > 0){bool f = true;for(int k = 0; k < 3; k++){if(st & (1 << k) && vis[i][k + 1]){f = false;break;}}if(!f) continue;dfs(0, i, st, 0);}printf("%lld\n", dp[n + 1][0]);return 0;
}

View Code

转载于:https://www.cnblogs.com/lwqq3/p/9746461.html

gym100825G. Tray Bien(轮廓线DP)相关推荐

  1. [2021.1.13多校省选模拟2]T1(动态规划/轮廓线dp)

    [2021.1.13多校省选模拟2]T1 一个经典的轮廓线dp,可以发现一定可以找到一条轮廓将这个图形分开,然后使得左半部分由左边处理,右半部分由右边处理,然后我们只需要处理这个折线即可,具体实现需要 ...

  2. 【TC SRM 312 Div1 Level3】CheapestIsland(轮廓线DP)(最小表示法)

    传送门 随便抓了一道题来复习轮廓线DP. 听说和[JLOI2009 神秘的生物]本质上是一样的,没看,不清楚. 题解: 给一个棋盘图,每个格子有权值,求权值之和最小的连通块. 没什么难度,熟悉轮廓线的 ...

  3. 轮廓线DP(插头DP 裸 经典骨牌)

    引言:所谓轮廓线,不是某一行,或者某一列,而是指某一个特定轮廓的状态. 放置骨牌的约定:(保证放置有最优子结构) 假设我们正在放置第i行的骨牌,那么会有下面3种方式: 灰色表示已经有的骨牌,绿色表示新 ...

  4. 【轮廓线dp】一双木棋

    题目 棋盘格中,两人轮流下棋.下的棋必须左面,上面都已经下过棋. 每个棋盘格有两个值,分别代表两人下了该点能得到的分数. 每个人都想要(己方分数-对方分数)MAX 现每个人都采取最优策略,也知道对方要 ...

  5. 【HDU - 6185】Covering(矩阵快速幂优化二维dp,高斯消元,轮廓线dp打表)

    题干: Bob's school has a big playground, boys and girls always play games here after school. To protec ...

  6. 2019.01.24 NOIP训练 旅行(轮廓线dp)

    传送门 题意简述: 给一个n∗mn*mn∗m的有障碍的网格图,问你从左上角走到左下角并覆盖所有可行格子的路径条数. 思路: 路径不是很好算. 将图改造一下,在最前面添两列,第一列全部能通过,第二列只有 ...

  7. UVA dp题目汇总

    UVa专题练习 A-4 10003 经典dp,可用四边形不等式优化 10029 基础dp,DAG最长路,需高效构图 10032 经典问题.子集和数问题.01背包问题 10036 能否在一个整数序列的每 ...

  8. 『ACM-算法-动态规划』初识DP动态规划算法

    一.多阶段决策过程的最优化问题 在现实生活中,有类活 动的过程,由于 它的特殊性,可将过程分成若干个互相阶段.在它的每一阶段都需要作出决策,从而使整个过程达到最好的活动效果.当阶段决策的选取不是任意确 ...

  9. (转)dp动态规划分类详解

    dp动态规划分类详解 转自:http://blog.csdn.NET/cc_again/article/details/25866971 动态规划一直是ACM竞赛中的重点,同时又是难点,因为该算法时间 ...

最新文章

  1. Windows IIS7 下安装配置 PHP7.0
  2. 个人博客 SEO 优化(2):站内优化
  3. Intel qsv + ffmpeg 硬解h264
  4. flink中的faker生成的数据后面带有~
  5. plsql轻量版触发器
  6. PAT (Basic Level) Practice (中文)1022 D进制的A+B (20 分)
  7. python数据库去重复_python string 去重复数据库
  8. @WebListener 注解方式实现监听(eclipse和idea)
  9. 数学建模竞赛大汇总,别再被野鸡竞赛坑啦
  10. 超全的网络安全精编自学资料合集(64份)
  11. ctf 实验吧 围在栅栏中的爱 (最近一直在好奇一个问题,QWE到底等不等于ABC? )
  12. 5V输入升压14.4V四串磷酸铁锂电池充电芯片板 ,12.8V-32号电路板
  13. 《信息系统安全》课后习题答案(陈萍)
  14. 管培生走下神坛,“高管捷径”破灭
  15. nodejs之简单的爬数据
  16. 2022 最新 JCR正式发布全球最新影响因子名单(前600名)
  17. 梅科尔工作室-华为云ModelArts的简单使用(附详细图解)
  18. 三星 android 调试模式设置,三星盖世4 usb调试怎么打开?安卓4.2怎样打开USB调试...
  19. C++入门——实现见缝插针游戏
  20. 简单好用的网络保护软件 lulu for mac 支持big sur系统

热门文章

  1. 连接mysql超时时间设置多少_怎么设置数据库的连接数和连接超时时间
  2. 1的恢复出厂设置在哪里_罗斯蒙特变送器怎么恢复出厂设置?
  3. java中怎么判断一段代码时线程安全还是非线程安全_Java 中的多线程你只要看这一篇就够了...
  4. from 下拉框多个值提交_Git commit 多行信息提交
  5. android让一个控件跟上面控件对其,学个明白--Android控件架构
  6. java抽象类异常_求教JAVA里面的错误继承抽象类我都已经看傻了。
  7. 是否可以限制蓝牙传输距离_技术文章—关于蓝牙传输范围的常见误解
  8. c语言箭头指针的作用,C语言中,结构体成员变量的点和箭头
  9. office数据集dslr_DSLR的完整形式是什么?
  10. bootstrap网格系统_如何使用Bootstrap网格系统?