![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
——动态规划——
文章平均质量分 56
QAQQQQQQQQQQQ
菜
展开
-
动态规划的01背包问题
最近学了dp啦啦啦 01背包问题:一个背包总容量为V,现在有N个物品,第i个 物品体积为weight[i],价值为value[i],现在往背包里面装东西,怎么装能使背包的内物品价值最大?看到这个问题,可能会想到贪心算法,但是贪心其实是不对的。例如最少硬币找零问题,要用动态规划。动态规划思想就是解决子问题并记录子问题的解,这样就不用重复解决子问题了。动态规划先找出子问题,我们可以这样考虑:原创 2018-01-18 19:02:58 · 2197 阅读 · 0 评论 -
带延迟的动态规划--51nod1327棋盘游戏
传送门看到数据范围就觉得这一定是一个n2∗mn^2*mn2∗m或者n∗m2n*m^2n∗m2的dp qwqdp\ qwqdp qwq果然是这样,因为每一列都是填一个或者不填,所以一定是按列dpdpdp但这个dpdpdp和以往有些不同,一般dpdpdp状态设计都只跟当前状态有关,并不关心前面的和后面的,但因为这道题中li和ril_i和r_ili和ri有一些不同,当当前枚...原创 2018-10-16 16:06:19 · 158 阅读 · 0 评论 -
分步DP--HDU5807Keep In Touch
传送门暴力地想设f[i][j][k]f[i][j][k]f[i][j][k]表示三个人从i,j,ki,j,ki,j,k出发的方案数,复杂度n6n^6n6可以用加维优化的思想设f[i][j][k][l]f[i][j][k][l]f[i][j][k][l]表示当前三个人走到i,j,ki,j,ki,j,k,该lll走的方案数这样状态数是n3n^3n3,转移O(n)O(n)O(n),总复杂度O(n...原创 2018-10-19 10:55:21 · 122 阅读 · 0 评论 -
dp好题--2018.10.16模拟赛T1
题目大意:多组数据,先给ttt表示数据组数,给一个111到nnn的排列,问是否可以变成一个上升序列和一个下降序列拼起来,并输出上升序列的长度以及这个上升序列,下降序列同理。(语文不太好···给个样例就是:输入:355 1 4 2 351 2 3 5 411输出:YES2 1 23 5 4 3YES3 1 2 32 5 4YES01 1数据范围:t&...原创 2018-10-17 17:41:34 · 209 阅读 · 0 评论 -
DAG上DP--CF459E
看CF吧智障luogu又咕了先排序然后从小到大加边,这样就能保证是递增的了,然后边加边dpdpdp,设f[i]f[i]f[i]表示到iii的最大递增边数,注意是严格递增所以边权相同要放一块处理#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>#inc...原创 2018-10-28 18:49:43 · 188 阅读 · 0 评论 -
DP+SPFA--luoguP4042 [AHOI2014/JSOI2014]骑士游戏
传送门很容易写错的题!设f[i]f[i]f[i]表示彻底消灭iii这个怪兽需要消耗的最小体力可以观察到普攻iii以后变出来一些小怪兽,相当于一个有向图如果是DAGDAGDAG就可以直接dpdpdp了,但他不是!所以要用spfaspfaspfa反复松弛!说到spfaspfaspfa松弛,一般的松弛都是松弛去点,一开始想的松弛始点,结果复杂度爆炸(其实可以卡过去),其实正解是建反边然后用小怪...原创 2018-10-28 19:53:34 · 132 阅读 · 0 评论 -
数据结构优化DP--Pieces
题目:有 NNN个格子排成一行。这些格子从左到右标号为 111~NNN。 你有两个棋子,开始分别放在AAA号格子和BBB号格子里。你将要按照接收的顺序执行qqq个以下形式的请求: 给定一个正整数 xxx,选择两个棋子中的一个,把它移动到xxx号格子里。 把一个棋子移动一格需要一秒钟的时间。也就是说,把一个棋子从xxx号格子移到yyy号格子需要∣x−y∣|x-y|∣x−y∣秒的时间。你的目标是在...原创 2018-10-26 00:14:22 · 668 阅读 · 0 评论 -
树状数组求LCS及LCS个数
解锁LCSLCSLCS新姿势这个求法是nlognnlognnlogn的,但如果有许多重复的就会被卡成n2×log(n2)n^2\times log(n^2)n2×log(n2),所以如果是排列的话就会很好用,不过目前应该也没有低于n2n^2n2的LCSLCSLCS求法?所以说不管有没有重复的应该都能过找到了一个不那么裸的题luogu2516做法:首先预处理出aaa串中每个字符出现的位置,可...原创 2018-11-06 08:27:42 · 412 阅读 · 2 评论 -
动态DP(学习笔记)
一道模板题动态dpdpdp是猫学长发明的用来解决树上带修DP的问题的算法。好像多数是求树上最大权独立集?树上最大权独立集我们可以用树形dpO(n)dpO(n)dpO(n)地求出来,设f[u][0/1]f[u][0/1]f[u][0/1]表示uuu为根的子树uuu选或不选的最优方案,可以列出转移式:f[u][0]+=max(f[v][1],f[v][0])f[u][0]+=max(f[v][...原创 2018-11-27 23:22:59 · 1166 阅读 · 0 评论 -
动态规划--P1436 棋盘分割
传送门dpdpdp,把切割变成往外扩展,f[i][x1][y1][x2][y2]f[i][x1][y1][x2][y2]f[i][x1][y1][x2][y2]表示第iii次扩展到(x1,y1)(x2,y2)(x1,y1) (x2,y2)(x1,y1)(x2,y2)的矩形最小的平方和,然后枚举上一次从哪儿扩展过来就好了#include&lt;iostream&gt;#include&lt;c...原创 2018-10-15 12:05:05 · 132 阅读 · 0 评论 -
单调队列优化dp--bzoj1705
传送门暴力的dp是1e9的,是这样一样转移式:f[i][j]=min{f[i−1][k]+∣j−k∣∗c}+(j−a[i])2f[i][j]=min\{f[i-1][k]+|j-k|*c\}+(j-a[i])^2f[i][j]=min{f[i−1][k]+∣j−k∣∗c}+(j−a[i])2然后分类讨论去掉绝对值f[i][j]={min{f[i−1][k]+j∗c−k∗c}+(j−a[i]...原创 2018-10-11 09:43:01 · 575 阅读 · 0 评论 -
动态规划的背包问题
背包问题有许多 01背包:一种只能取一次 多重背包:一种可以取有限的次数 完全背包:一种可以取无数次啧 最近做dp做的快吐了···先来个简单的01背包 luogu1060 自己找题吧···直接上代码:#include<iostream>#include<cstdio>#include<algorithm>using names...原创 2018-01-28 11:57:25 · 345 阅读 · 0 评论 -
Lis
lis 也就是 最长上升子序列 其实很好求 把以每个数为结尾的最长上升子序列找出来再找最大的就好了 动态方程:dp[i]=max(dp[i],dp[j]+1)有道裸题luogu1091合唱队形 好心粘一下题面 题目描述N位同学站成一排,音乐老师要请其中的(N-K)位同学出列,使得剩下的K位同学排成合唱队形。合唱队形是指这样的一种队形:设K位同学从左到右依次编号为1,2…,原创 2018-01-28 12:10:44 · 619 阅读 · 0 评论 -
HAOI2008玩具取名 区间dp
题目大意:某人有一套玩具,并想法给玩具命名。首先他选择WING四个字母中的任意一个字母作为玩具的基本名字。然后他会根据自己的喜好,将名字中任意一个字母用“WING”中任意两个字母代替,使得自己的名字能够扩充得很长。现在,他想请你猜猜某一个很长的名字,最初可能是由哪几个字母变形过来的。对于这个题,发现你要是想维护到所有的情况,就必须每次以两个字符为一个块来统计,那样就会发现十分的麻烦,于是我...原创 2018-04-12 23:44:15 · 223 阅读 · 0 评论 -
动态规划 循环展开--bzoj2431
qwq 从qz的博客看到了这道题 觉得很好 见识了一个新东西叫做 循环展开 百度百科这样定义: 循环展开,是一种牺牲程序的尺寸来加快程序的执行速度的优化方法。可以由程序员完成,也可由编译器自动优化完成。循环展开通过将循环体代码复制多次实现。循环展开能够增大指令调度的空间,减少循环分支指令的开销。循环展开可以更好地实现数据预取技术。思路并不难 二维dp 状态是到第i个数有j个逆...原创 2018-06-11 23:53:11 · 271 阅读 · 0 评论 -
DP+滚动数组优化空间--luogu2467地精部落
题目描述传说很久以前,大地上居住着一种神秘的生物:地精。地精喜欢住在连绵不绝的山脉中。具体地说,一座长度为N的山脉H可分为从左到右的N段,每段有一个独一无二的高度Hi,其中Hi是1到N之间的正整数。如果一段山脉比所有与它相邻的山脉都高,则这段山脉是一个山峰。位于边缘的山脉只有一段相邻的山脉,其他都有两段(即左边和右边)。类似地,如果一段山脉比所有它相邻的山脉都低,则这段山脉是一个山...原创 2018-06-06 00:11:20 · 152 阅读 · 0 评论 -
lis+dp--bzoj1049
传送门简直神题直接放别人博客https://www.cnblogs.com/iwtwiioi/p/4160945.html但我的写法不太一样#include<iostream>#include<cstdio>#include<algorithm>#include<cmath>#include<cstring>#...原创 2018-08-22 18:02:28 · 149 阅读 · 0 评论 -
dp+第一类stirling数--51nod1250 排列与交换
传送门这道题有两问,第一问直接dp就行,和stirling有一些关系的是第二问(1)solution:设f[i][j]表示到第i个数已经交换了j次因为必须是相邻交换,所以i可以不断向前交换,那么f[i][j]就可以由f[i-1][p](p=j-i+1~j)的和转移到再用前缀和优化就能n^2转移了最后统计答案的时候,只要看i和k的奇偶性是否相同,相同的话就可以重复交换相同...原创 2018-09-07 19:26:08 · 190 阅读 · 0 评论 -
异或dp--51nod1301 集合异或和
传送门solution:一道比较难想的dp吧,看了题解才知道题目的突破口就是这个性质:A<B当且仅当A^B的最高位是1的那一位上B为1而A为0 有了这个性质就可以考虑异或dp设f[i][j][0/1]表示当前处理到第i个数,A^B=j,B的第x位为0/1(x就是上面所说的最高位)的方案数然后最外层枚举x,内层算出当前f数组,将j为2^x~2^(x+1)的f[max...原创 2018-09-07 20:56:28 · 749 阅读 · 1 评论