状压dp
Johnson1141
这个作者很懒,什么都没留下…
展开
-
HDU - 4539
纯状压题,dp部分很简单 考虑一行上的限制条件,再去深究列上的限制#include<iostream>#include<stdio.h>#include<string>#include<cstring>#include<vector>#include<stack>#include<algorithm...原创 2018-08-23 13:29:18 · 166 阅读 · 0 评论 -
CodeForces - 11D
有意思 和之前的项链异曲同工,但之前就是入门,半抄半做的。 one more time 再跑一遍吧 环?怎么处理环? 都是通过记录路径,若是首末可相连,那么就是个环,同时,这样也可以用作之后的状态转移,妙啊 dp[i][s]: 路径的最后一个点是i且状态是s,且有隐含条件开头是是状态的第一个1。#include<iostream>#include<stdio.h...原创 2018-08-23 16:00:26 · 553 阅读 · 0 评论 -
HDU - 1565
这道题以为是简单的模板题(确实简单啊。。。),卡了好久 1.内存限制,之前题放的很开,这里要卡一下最多的状态数,但没卡滚动数组(也卡不了吧) 2.注意要统计的是最值还是数量。 3.二进制状态 2n和2n+12n和2n+12^n 和2^{n+1} 是分开的 可以预处理2202202^{20} 再对不同n取前缀,但效果不明显。#include&amp;amp;lt;iostream&amp;amp;gt;#incl...原创 2018-08-23 19:11:16 · 135 阅读 · 0 评论 -
HDU - 1074
A - Doing Homework HDU - 1074入门题 很有意思 最多十五门课 15位二进制 0代表没选这门课 1代表选了这门课 状态从 0~(2n−1)0~(2n−1)0~(2^n-1)即什么都没选到所有课...原创 2018-08-21 13:20:00 · 189 阅读 · 0 评论 -
HDU - 3091
有一个DP题,意题都看了好久用n个珠子串成一个项链,但是n个珠子两两之间可能不能放在一起,问有几种串珠子的方式? 因为项链可以旋转,所以选择一个起点最终走到这个起点,且每个点只能走一次,问有多少种情况? 类似旅行商问题,但不一样。问题还是对于一个珠子之后,它要选哪个珠子,因为n个珠子都要被选到,这里解决的就是个顺序问题。 如何定义dp状态 dp[state][i] :在state状态下,且...原创 2018-08-21 16:34:06 · 193 阅读 · 0 评论 -
HDU - 3182
一眼看上去有点像变形背包,但完全不是 每种汉堡只能选一种,选一种,且选i种汉堡 需要先作出规定的汉堡 比较难的就是如何判断这个状态是合法的,而对于确定的状态,答案是唯一的 合法表现在两方面:1.val>0 2.所有的汉堡满足依赖 这里的处理很优美:从一个合法状态到另一个合法状态,打标记#include<iostream>#include<stdio.h&g...原创 2018-08-21 17:48:11 · 170 阅读 · 0 评论 -
轮廓线dp入门题 && POJ - 2411
题目很有意思,就是oj太烂了 刘汝佳的代码太优雅了,看不懂,但意思差不多。 就我做过的状压dp总是以一行(或一列)为一个状态,先理清一行中的关系,后再找行对行的关系 这里不能用行,行之间的关系不够了,因为要考虑不同的放法。 那一行不够,两行够不够?我觉得够,但时间复杂度不够优秀,会包含很多无效转态所以优化一下? dp三个问题: 1.状态的确立 2.状态转移方程 3.初始化1...原创 2018-08-29 16:53:26 · 474 阅读 · 0 评论 -
HDU - 1693 插头dp 艰难入门
什么是插头dp? 首先我们要先知道它能解决那些问题。一般都是一张方格图里有关连通性的一些问题。 那么对于一个格子而言,他就原创 2018-09-02 13:37:55 · 544 阅读 · 0 评论