插头Dp总结
T1 HDU1693:Eat the Trees
题目大意:给出n*m的方格,有些格子不能铺线,其它格子必须铺,可以形成多个闭合回路。问有多少种铺法?
插头Dp板子题,题目要求可以是多个回路,
只需要两个状态,代表是否有插头即可
$plug_1$ $plug_2$
0 0 新建一个插头插向两边
0 1 转/不转弯
1 0 同上
1 1 合并插头
T2 Ural 1519 Formula 1
题目大意:一个 m * n 的棋盘,有的格子存在障碍,求经过所有非障碍格子的哈密顿回路个数
与T1不同的是必须是一个闭合回路
类似于括号匹配,两个插头代表是左右
$plug_1$ $plug_2$
0 0 新建一个插头插向两边
0 1 转/不转弯
0 2 同上
1 0 同上
1 1 合并插头,并且把$plug_2$的右插头改为左插头
1 2 注意这种情况一定是一对插头碰到了一起,直接判断是不是最后一个方块统计答案或者弃掉
2 0 转/不转弯
2 1 直接合并
2 2 合并插头,并把$plug_1$的左插头改为左插头改为右插头
T3 神奇游乐园
题目描述
经历了一段艰辛的旅程后,主人公小P乘坐飞艇返回。在返回的途中,小P发现在漫无边际的沙漠中,有一块狭长的绿地特别显眼。往下仔细一看,才发现这是一个游乐场,专为旅途中疲惫的人设计。娱乐场可以看成是一块大小为n×m的区域,且这个n×m的区域被分成n×m个小格子,每个小格子中就有一个娱乐项目。然而,小P并不喜欢其中的所有娱乐项目,于是,他给每个项目一个满意度。满意度为正时表示小P喜欢这个项目,值越大表示越喜欢。为负时表示他不喜欢,这个负数的绝对值越大表示他越不喜欢。为0时表示他对这个项目没有喜恶。小P决定将飞艇停在某个小格中,然后每步他可以移动到相邻的上下左右四个格子的某个格子中。小P希望找一条路径,从飞艇所在格出发,最后又回到这个格子。小P有一个习惯,从不喜欢浪费时间。因此,他希望经过每个格子都是有意义的:他到一个地方后,就一定要感受以下那里的惊险和刺激,不管自己是不是喜欢那里的娱乐项目。而且,除了飞艇所在格,其他的格子他不愿意经过两次。小P希望自己至少要经过四个格子。在满足这些条件的情况下,小P希望自己玩过的娱乐项目的满意度之和最高。你能帮他找到这个最高的满意度之和吗?
输入格式
第一行为两个正整数n和m,表示游乐场的大小为n×m。
n和m满足:2<=n<=100,2<=m<=6。
接下来的n行,每行有m个整数,第i行第j列表示游乐场的第i行第j列的小格子中的娱乐项目的满意度,满意度的范围是[-1000,1000]。同一行的两个整数之间用空格隔开。输出格式
输出文件中仅一行为一个整数,表示最高的满意度之和。
这道题与T2类似,只是不需覆盖满,仍要特别注意1-2合并的情况
T4标识设计
题目描述
一家缩写为 LLL 的公司正在设计 logo,他们的初步方案是在一张方格上放置三个 L 形的图案以及一些额外的装饰性图形。例如:
(灰色区域表示装饰性图形)
三个 L 图案和装饰性图形均放置在方格之中,且必须占满方格,「L」的横竖笔画长短均可,但长度必须大于零(即不能退化为一条线段)。另外,为了使 L 图形醒目且容易识别,设计师规定三个 L 形图案之间不能有重叠或交叉的部分。当然,L 形图案也不能穿过装饰图形或与之重叠。
现在设计师已经确定了所有装饰性图形的位置,希望你计算一下放置不同的 L 形图案总共可以设计出多少个 logo。
设dp[i][j][k][l][r]代表到了第i行第j列已经设计了k个'L'型,斜着有没有插头,其他插头的分布状态是r(已经预处理)的方案数
直接轮廓线Dp即可,分类讨论比较简单不再描述
T5ParkII
题目大意:要求找一条路径,使得每个点最多经过一次,并且点权值之和最大。
很不错的一道题,插头的定义能对前面的题有一个更深的理解
这道题与T3区别在于不需要是一条回路,
这样便会出现一些在当前状态下没有与其匹配的插头,
我们不妨称其为独立插头,用3来表示,
当然当前状态下可能会出现2个独立插头,它们只是还没有会合而已。
$plug_1$ $plug_2$
0 0 建立一对(1,2)/某个方向建立3
0 1 转/不转/停止并且2改3
0 2 转/不转/停止并且1改3
0 3 转/不转
1 0 同0,1
1 1 右2改1
1 2 (只剩一对1,2)则更新ans
1 3 左2改3
2 0 同0,2
2 1 合并
2 2 左1改2
2 3 左1改3
3 0 转/不转/(只剩一个3)则更新ans
3 1 右2改3
3 2 右1改3
3 3 (只剩一对3,3)则更新ans
插头dp的ans更新一般都比较神奇,可能不局限于最后的某一个状态,而是在dp的过程中对于某些可以终止的状态进行统计
比如说这个题,可以在(只剩一对3,3),(只剩一对1,2)(只剩一个3)的情况下更新答案
插头Dp总结的更多相关文章
- 插头dp
插头dp 感受: 我觉得重点是理解,算法并不是直接想出怎样由一种方案变成另一种方案.而是方案本来就在那里,我们只是枚举状态统计了答案. 看看cdq的讲义什么的,一开始可能觉得状态很多,但其实灰常简单 ...
- HDU 4113 Construct the Great Wall(插头dp)
好久没做插头dp的样子,一开始以为这题是插头,状压,插头,状压,插头,状压,插头,状压,无限对又错. 昨天看到的这题. 百度之后发现没有人发题解,hust也没,hdu也没discuss...在acm- ...
- HDU 4949 Light(插头dp、位运算)
比赛的时候没看题,赛后看题觉得比赛看到应该可以敲的,敲了之后发现还真就会卡题.. 因为写完之后,无限TLE... 直到后来用位运算代替了我插头dp常用的decode.encode.shift三个函数以 ...
- 插头DP专题
建议入门的人先看cd琦的<基于连通性状态压缩的动态规划问题>.事半功倍. 插头DP其实是比较久以前听说的一个东西,当初是水了几道水题,最近打算温习一下,顺便看下能否入门之类. 插头DP建议 ...
- HDU 1693 Eat the Trees(插头DP、棋盘哈密顿回路数)+ URAL 1519 Formula 1(插头DP、棋盘哈密顿单回路数)
插头DP基础题的样子...输入N,M<=11,以及N*M的01矩阵,0(1)表示有(无)障碍物.输出哈密顿回路(可以多回路)方案数... 看了个ppt,画了下图...感觉还是挺有效的... 参考 ...
- HDU 1693 Eat the Trees(插头DP)
题目链接 USACO 第6章,第一题是一个插头DP,无奈啊.从头看起,看了好久的陈丹琦的论文,表示木看懂... 大体知道思路之后,还是无法实现代码.. 此题是插头DP最最简单的一个,在一个n*m的棋盘 ...
- HDU 4064 Carcassonne(插头DP)(The 36th ACM/ICPC Asia Regional Fuzhou Site —— Online Contest)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4064 Problem Description Carcassonne is a tile-based ...
- URAL 1519 基础插头DP
题目大意: 给定一个图,一部分点'*'作为障碍物,求经过所有非障碍点的汉密尔顿回路有多少条 基础的插头DP题目,对于陈丹琦的论文来说我觉得http://blog.sina.com.cn/s/blog_ ...
- uva 11270 - Tiling Dominoes(插头dp)
题目链接:uva 11270 - Tiling Dominoes 题目大意:用1∗2木块将给出的n∗m大小的矩阵填满的方法总数. 解题思路:插头dp的裸题,dp[i][s]表示第i块位置.而且该位置相 ...
- bzoj 1187: [HNOI2007]神奇游乐园 插头dp
1187: [HNOI2007]神奇游乐园 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 668 Solved: 337[Submit][Statu ...
随机推荐
- python 学习(day1)
初识python python的创始人为吉多*范罗苏姆(Guido van Rossum).1989年圣诞节期间,开发出来的脚本解释程序. python是⼀⻔什么样的语言 python 是一门解释型语 ...
- java线程join方法使用方法简介
本博客简介介绍一下java线程的join方法,join方法是实现线程同步,可以将原本并行执行的多线程方法变成串行执行的 如图所示代码,是并行执行的 public class ThreadTest { ...
- 从零开始学 ASP.NET Core 与 EntityFramework Core 目录
从零开始学 ASP.NET Core 与 EntityFramework Core 介绍 我是一个目录,它旨在帮助开发者循序渐进的了解 ASP.NET Core 和 Entity Framework ...
- ES6入门 阮一峰
ECMAScript 6 入门 http://es6.ruanyifeng.com/#README 在线ES6转ES5 https://es6console.com/k11vgg1r/
- sequelize时间自动格式化
问题 每次查询datetime的字段,显示出来都是这种格式 2019-08-27T12:02:05.000Z 解决办法 初始化Sequelize的时候传入dialectOptions参数 let se ...
- vsto 以隐藏的方式打开一个excel 文件 并获得excel文件的缩略图
public byte[] GetExcelPictureFile(string filepath) { Workbook workbook=null; Microsoft.Office.Intero ...
- crm-4权限
1.rbac-优化login函数 因为login是业务逻辑 ,而rbac是个组件 ,将rbac在login的代码分离 ###初始化权限函数分离出去 rbac/service/permission fr ...
- 自定义栈Stack 和 队列Queue
自定义栈 接口 package com.test.custom; public interface IStack<E> { E pop(); void push(E e); E peek( ...
- [收藏]Dubbo官方资料
首页 || 下载 || 用户指南 || 开发者指南 || 管理员指南 || 培训文档 || 常见问题解答 || 发布记录 || 发展路线 || 社区 English ...
- python 小数据池 深浅拷贝 集合
1.小数据池: 1.1代码块: 一个文件,一个函数,一个类,一个模块,终端中每一行 1.1.1 数字: -5 ~ 256 1.1.2 字符串: 乘法时总长度不能超过20 1.1.3 布尔值: 内容相同 ...
(灰色区域表示装饰性图形)