动态规划
文章平均质量分 75
chenxiaoran666
人要有梦想,不然和咸鱼有什么区别!
展开
-
【POJ1080】Human Gene Functions(动态规划)
题面:【POJ1080】Human Gene Functions这道题目一看就能想到用DP来做。首先,先把题中的表格放在一个函数中:int s(char x,char y){ if(x=='A') { if(y=='A') return 5; if(y=='C') return -1; if(y=='G') return -2; if(y=='T') retur...原创 2018-04-07 13:52:16 · 417 阅读 · 0 评论 -
【BZOJ1040】[ZJOI2008] 骑士(基环外向树DP)
点此看题面大致题意: 给你一片基环外向树森林,如果选定了一个点,就不能选择与其相邻的节点。求选中点的最大权值和。树形DPDPDP此题应该是**树形DPDPDP**的一个升级版:基环外向树DPDPDP。LinkLinkLink树形DPDPDP 详见博客 动态规划专题(二)——树形DP什么是基环外向树森林什么是 基环外向树?基环外向树,一般指一张 点数与边数相等 的联通图,此时...原创 2018-09-27 20:44:51 · 243 阅读 · 0 评论 -
动态规划专题(三)——数位DP
前言数位DPDPDP 真的是最恶心的DPDPDP。简介看到那种给你两个数,让你求这两个数之间符合条件的数的个数,且这两个数非常大,这样的题目一般就是 数位DPDPDP 题。数位DPDPDP一般都用于计数。具体实现数位DPDPDP有两种实现方法:个人感觉用记忆化搜索来实现要比较容易一些。...原创 2018-10-06 12:53:01 · 7144 阅读 · 3 评论 -
【HDU4507】恨7不成妻(数位DP)
点此看题面大致题意: 让你求出一段区间内与777无关的数的平方和。与777无关的数指整数中任意一位不为777、整数的每一位加起来的和不是777的整数倍、这个整数不是777的倍数。数位DPDPDP这题应该比较显然是一道**数位DPDPDP**题。LinkLinkLink数位DPDPDP 详见博客 动态规划专题(三)——数位DP如何记录状态这道题关键就在于如何记录状态,其余的就和...原创 2018-10-06 14:31:07 · 1105 阅读 · 0 评论 -
【洛谷1273】有线电视网(树上背包)
点此看题面大致题意: 给你一棵带权树,已知每连接一条边需要一定花费,如果某个叶节点能到达根,可以获得一定收益。问在不亏本的情况下,最多能使多少个叶节点能到达根。树上背包这是一道比较经典的树上背包题。LinkLinkLink树上背包 详见博客 动态规划专题(二)——树形DP如何记录状态我们可以用fi,jf_{i,j}fi,j表示在以iii为根的子树内选择jjj个叶节点能得到的...原创 2018-10-20 13:02:23 · 258 阅读 · 0 评论 -
【洛谷2051】[AHOI2009] 中国象棋(烦人的动态规划)
点此看题面大致题意: 让你在一张N∗MN*MN∗M的棋盘上摆放炮,使其无法互相攻击,问有多少种摆法。辟谣听某大佬说这是一道**状压DPDPDP**题,于是兴冲冲地去做,看完数据范围彻底懵了:N≤100N≤100N≤100!这么大的数据范围压死你!好吧,其实这就是一道普通的DPDPDP,与状压没有任何关系。其实状压可以用来骗分,能得50。考虑性质对于这种题目,第一步肯定是考虑有没有...原创 2018-10-20 15:49:13 · 235 阅读 · 0 评论 -
【洛谷2519】[HAOI2011] problem a(动态规划)
点此看题面大致题意: 一次考试共有nnn个人参加,第iii个人说有aia_iai个人分数比他高,bib_ibi个人分数比他低。求最少有几个人说谎。动态规划刚看完题目可以说是一头雾水。仔细想想,可以把每个人的状态转化为一个区间([ai+1,n−bi][a_i+1,n-b_i][ai+1,n−bi]),表示这个区间内所有元素都相等。那么我们要求的就是求出最大的区间数MaxMaxMa...原创 2018-10-25 14:08:50 · 226 阅读 · 0 评论 -
【CF739E】Gosha is hunting(WQS二分套WQS二分)
点此看题面大致题意: 你有两种捕捉球(分别为AAA个和BBB个),要捕捉nnn个神奇宝贝,第iii个神奇宝贝被第一种球捕捉的概率是s1is1_is1i,被第二种球捕捉的概率是s2is2_is2i,问在最优策略下期望捕捉到的神奇宝贝数量。WQSWQSWQS二分这应该是一道比较经典的WQSWQSWQS二分题(毕竟是**WQSWQSWQS二分套WQSWQSWQS二分**)。LinkLin...原创 2018-10-25 16:50:52 · 1026 阅读 · 0 评论 -
【BZOJ1060】[ZJOI2007] 时态同步(树形DP)
点此看题面大致题意: 给你一棵带权树,每次使用道具可以将某条边的边权加111,问你至少需要使用多少次道具,才能使每个叶子节点到根节点的距离相等。贪心的思想首先,我们应该先有一个贪心的思想。不难发现,如果要将以xxx为根节点的子树内的所有边权加上valvalval,不如直接将xxx到faxfa_xfax的边权加上valvalval更优。这样一来就有一个基本思路:对于以xxx为根节点的子...原创 2018-10-21 12:33:23 · 160 阅读 · 0 评论 -
【洛谷2577】[ZJOI2005] 午餐(较水DP)
点此看题面大致题意: 有NNN个学生去食堂打饭,每个学生有两个属性:打饭时间aia_iai和吃饭时间bib_ibi。现要求将这些学生分成两队分别打饭,求最早何时所有人吃完饭。贪心首先,依据贪心的思想,肯定是吃饭时间长的先打饭,因此可以将其按吃饭时间先排序预处理一遍。如何DPDPDP贪心完,就是DPDPDP了。个人认为三维DPDPDP还是非常好想的:用fi,j,kf_{i,j,k...原创 2018-10-21 12:35:34 · 202 阅读 · 0 评论 -
动态规划专题(二)——树形DP
前言DPDPDP这东西真的是博大精深啊…简介树形DPDPDP,顾名思义,就是在树上操作的DPDPDP,一般可以用fif_ifi表示以编号为iii的节点为根的子树中的最优解。转移的时候一般都将信息由子节点转移到父亲节点,也就是将信息从下往上转移。因此,一般树形DPDPDP都会采用 递归 的形式。几道例题好吧,DPDPDP好像也没什么东西可讲,这样介绍得还是不够具体。干脆直接看例题...原创 2018-09-26 20:43:46 · 376 阅读 · 0 评论 -
动态规划专题(一)——状压DP
前言最近,决定好好恶补一下我最不擅长的DPDPDP。动态规划的种类还是很多的,我就从状压DPDPDP开始讲起吧。简介状压DPDPDP应该是一个比较玄学的东西。由于它的时间复杂度是指数级的(但也足以吊锤DFSDFSDFS),所以状压DPDPDP题的数据范围一般都巨小。前置技能:位运算要想学习状压DPDPDP,最好先去学一学位运算,因为位运算在状压DPDPDP中起到...原创 2018-09-16 14:11:21 · 554 阅读 · 0 评论 -
【洛谷1156】垃圾陷阱(动态规划)
点此看题面原创 2018-08-23 15:28:17 · 319 阅读 · 0 评论 -
【POJ1159】Palindrome(动态规划)
题面:【POJ1159】Palindrome这道题是一道较水的DP题。我们可以用f[i][j]来表示把[i..j]这个区间变成一个回文串所需添加的最少字母数,这样我们就可以轻松地得到状态转移方程:当s[i]==s[j]时,f[i][j]=min{f[i+1][j-1],f[i+1][j]+1,f[i][j-1]+1};当s[i]!=s[j]时,f[i][j]=min{f[i+1][j]...原创 2018-04-07 15:04:27 · 784 阅读 · 0 评论 -
【51nod1705】七星剑(成环DP)
点此看题面大致题意:你要把一把剑从0星升至7星,有n颗宝石供你选择,第i颗宝石的价值是c[i],用第i颗宝石将剑从k-1星升至k星的成功率是prob[k][i],而失败后会掉lose[k][i],要你求出将剑升至7星的期望花费。看到这题,自然而然地就会想到用动态规划来做,而转移方程其实也很好推:f[i]=min(f[i],f[i-1]+c[j]+(1-prob[i][j])*(f[...原创 2018-07-19 17:22:59 · 221 阅读 · 0 评论 -
【51nod1299】监狱逃离(树形DP)
点此看题面 大致题意:在一棵树中有N条边连接N+1个节点,现在已知这棵树上的M个节点,要求封住最少的节点,使这M个节点中的任意一个节点无法到达叶子节点,若能办到输出最少封住的节点数,若不能输出-1。 这道题目的正解是树形DP(hl666大佬说用O(n^2·m)的最小割也可以过这道题,不过这篇博客并不讨论这种做法,他能做出来是因为他强)。 树形DP,一般都将状态由子节点向父节点转移,这题当然也...原创 2018-07-19 21:06:13 · 343 阅读 · 3 评论 -
【BZOJ4033】[HAOI2015] 树上染色(树形DP)
点此看题面 大致题意:给你一棵点数为N的带权树,要你在这棵树中选择K个点染成黑色,并将其他的N-K个点染成白色。要求你求出黑点两两之间的距离加上白点两两之间距离的和的最大值。 这道题应该是一道比较显然的树形DP,我们可以用f[x][i]来表示当前节点为x时有i个黑色节点时能取得的最大值。则转移方程应为(伪代码)f[x][i]=max(f[x][i],f[x][i-j]+f[x的一个子节点]...原创 2018-07-19 22:35:01 · 254 阅读 · 0 评论 -
【BZOJ1076】[SCOI2008] 奖励关(状压DP)
点此看题面 大致题意:总共有nnn个宝物和kkk个回合,每个回合系统将随机抛出一个宝物(抛出每个宝物的概率皆为1/n1/n1/n),吃掉一个宝物可以获得一定的积分(积分可能为负),而吃掉某个宝物有一定的前提,即先吃掉若干种宝物每个至少一次,才能吃掉该宝物。请你求出在最优策略的情况下的最优得分。 由于这道题的数据范围很小,我们可以考虑状压DP,状压DP就是用一个数二进制下的每一位来存储一个信息,...原创 2018-07-22 11:26:15 · 197 阅读 · 0 评论 -
【BZOJ1087】[SCOI2005] 互不侵犯King(状压DP)
点此看题面 大致题意:在N×NN×NN×N的棋盘里面放KKK个国王,使他们互不攻击,共有多少种摆放方案(国王能攻击到它周围的8个格子)。 一看到这道题我就想到了经典的八皇后问题,但是,这道题其实可以用状压DP来做。 我们可以发现,影响该行国王摆放方法的只有上一行国王的摆放方式,因此,对于第iii行,我们只需要知道第i−1i−1i-1行的国王的摆放方式即可。所以,我们可以用f[i][j]f[i...原创 2018-07-22 11:54:36 · 278 阅读 · 0 评论 -
【BZOJ3209】花神的数论题(数位DP)
点此看题面 大致题意:设sum(i)sum(i)sum(i)表示iii二进制中1的个数,请求出∏ni=1sum(i)∏i=1nsum(i)\prod_{i=1}^n sum(i)。 很显然,这是一道数位DP题。原创 2018-07-24 17:22:41 · 450 阅读 · 0 评论 -
【BZOJ1833】[ZJOI2010] count 数字计数(数位DP)
点此看题面原创 2018-07-27 17:38:50 · 481 阅读 · 0 评论 -
【BZOJ1030】[JSOI2007] 文本生成器(AC自动机上跑DP)
点此看题面 大致题意:给你NNN个字符串(只含大写字母),要你求出有多少个由MMM个大写字母构成的字符串含有这NNN个字符串中的至少一个。 看到题目,应该比较容易想到用ACACAC自动机去做。 Link ACACAC自动机详见博客字符串匹配(三)——初学AC自动机但是,即使用了ACACAC自动机,这题直接求还是很麻烦,所以我们需要将题意先转化一下。 考虑对于一个由MM...原创 2018-08-21 18:38:49 · 245 阅读 · 0 评论 -
【BZOJ1925】 [SDOI2010] 地精部落(带有一堆性质的动态规划)
点此看题面大致题意: 问你有多少长度为nnn的数列,它当中每个数字要么比旁边两个数字都小,要么比旁边两个数字都大。性质这题应该比较显然是一道动态规划题,但刚看到这题时我却无从下手。其实,了解了关于这种合法数列的几个性质,这题就不难了。它具有对称性。即如果a1a2...ana_1a_2...a_na1a2...an为合法数列,则anan−1...a1a_na_{n-1}......原创 2018-10-27 13:26:52 · 218 阅读 · 0 评论