动态规划(/线性DP)
Nowed
把泪水种在心上,一定会开出勇敢的花。
展开
-
#分组背包,模拟# [luogu CF148E] Porcelain &[luogu CF135B] Rectangle and Square
TitleCF148E PorcelainCF135B Rectangle and SquareSolution权且当作放一下程序Code(Porcelain)#include<cstdio>#include<cstring>#include<algorithm>#define rep(i,x,y) for(register int i=x;i<=y;i++)using namespace std; const int N=305;原创 2020-08-19 20:23:53 · 139 阅读 · 0 评论 -
#dp# [ssloj 1479] 不知道该叫啥
TitleSolution设f[i][j]f[i][j]f[i][j]前iii位已经填好而且第iii位填jjj时的方案数f[i][j]=∑j=1M/jf[i−1][j]f[i][j]=\sum_{j=1}^{M/j}f[i-1][j]f[i][j]=j=1∑M/jf[i−1][j]fff可以改成一维的,然后∑\sum∑可以用前缀和f[j]=s[M/j]f[j]=s[M/j]f[j]=s[M/j]时间复杂度O(nq)O(nq)O(nq)然后我们发现M/jM/jM/j是单调递减的。于是我们原创 2020-08-14 12:52:01 · 141 阅读 · 0 评论 -
#dp# [ssloj1475] 俄罗斯套娃
TitleSolution设f[i][j]f[i][j]f[i][j]表示前iii位逆序对为jjj的方案数。f[i][j]=∑k=j−i+1jf[i−1][k]f[i][j]=\sum_{k=j-i+1}^{j}f[i-1][k]f[i][j]=k=j−i+1∑jf[i−1][k]因为可能爆空间,所以第一维可以滚动掉,然后第二维可以用前缀和。Code#include<cstdio> #include<algorithm>#define ll long long原创 2020-08-13 19:53:18 · 128 阅读 · 0 评论 -
#dp# [ssloj] [luogu P2051] [AHOI2009]中国象棋
Title [luogu P2051] [AHOI2009]中国象棋Solution设f[i][j][k]f[i][j][k]f[i][j][k]表示前iii行放了一个棋子的有jjj列,放了两个棋子的有kkk列。初始化f[0][0][0]=1f[0][0][0]=1f[0][0][0]=1这一行什么棋子都不放的时候f[i][j][k]=f[i−1][j][k]f[i][j][k]=f[i-1][j][k]f[i][j][k]=f[i−1][j][k]放一个棋子让原本有一个棋子的一列变成有原创 2020-08-12 16:52:23 · 122 阅读 · 0 评论 -
#dp/矩阵乘法快速幂# [jzoj 3847] 【NOIP2014八校联考第1场第2试9.21】都市环游(travel)
题目因为SJY干的奇怪事情过多,SJY收到了休假的通知,于是他准备在都市间来回旅游。SJY有一辆车子,一开始行驶性能为0,每过1时间行驶性能就会提升1点。每个城市的道路都有性能要求。SJY一共有t时间休息,一开始他位于1号城市(保证1号城市道路要求为0),他希望在n号城市结束旅程。每次穿过一条城市间的路会花费1时间,当然他也可以停留在一个城市不动而花费1时间。当且仅当车子的行驶性能大于等于一个城...原创 2019-11-09 20:57:40 · 216 阅读 · 0 评论 -
#贪心# [jzoj 3845] 【NOIP2014八校联考第1场第1试9.20】简单题
题目dzy 手上有一张n 个点m 条边的联通无向图,仙人掌是一张每条边最多在一个简单环内的联通无向图。他想求这个无向图的生成仙人掌中最多有多少条边。但是dzy 觉得这个问题太简单了,于是他定义了“美丽的生成仙人掌”,即在一个生成仙人掌中如果满足对于任意编号为i,j(i < j) 的两点,存在一条它们之间的简单路径上面有j-i+1 个点,则这个仙人掌是美丽的。他现在想要知道这张图的美丽的...原创 2019-11-06 16:30:12 · 176 阅读 · 0 评论 -
[jzoj 4245] 【五校联考6day2】er {前缀和+背包}
题目Description小明在业余时间喜欢打电子游戏,不是星际和魔兽这些,是赛尔号一类的游戏。最近小明在玩一款新出的游戏,叫做■■■■■■■■。小明觉得游戏里自己的装备太垃圾了,每次都被大神虐,一怒之下充了■■元准备强化装备。这个游戏中用于强化装备的道具叫做强化符文。有以下3 种:赋值强化符文,对某个装备使用这个符文以后,装备威力值会变为一个常数。因为这个功能很IMBA,可以让一个垃圾...原创 2019-01-29 15:01:58 · 227 阅读 · 0 评论 -
[tyvj 1449] 猫咪的进化{动态规划}
题目http://www.joyoi.cn/problem/tyvj-1449解题思路手推方程,需要用实数的快速读入。double read(){ double p=0,ff=1; char c=getchar(); while (!isdigit(c)) {if (c=='-') ff=-1; c=getchar();} while (isdigit(c)) p=p*10+c-...原创 2019-03-02 14:37:36 · 219 阅读 · 0 评论 -
[jzoj 4228] 【五校联考3day2】C {DP+离散化}
题目Description在远古的YL国大地上,有n个祭坛,每个祭坛上四个方向写有“艄、毜、鼛、瓯”四个大字,其实这在YL国古代分别是“东、南、西、北”的意思。YL国每年都要举行祈福消灾的祭祀活动,这个时候,每个祭坛都要在艄毜鼛瓯四个方向中选一个方向,祭坛将向这个方向发出一道隐形的光线,如果两个祭坛发出的光线相交,或者祭坛发出的光线经过了别的祭坛,则祭祀不仅不能成功还将遭到上天的惩罚,如果这...原创 2019-01-29 07:41:13 · 368 阅读 · 0 评论 -
[jzoj 4227] 【五校联考3day2】B {字符串+DP/(后缀数组)}
题目Description小D是雅礼高一著名的神犇,在NOI同步赛中获得了满分的优异成绩,而全国没有任何其他人获得如此的成绩。某天晚上,高一内部在讨论一道题目,然而包括小D之内的各种神犇都毫无头绪,这时候,高二的人赢小T上来给高二进行了精彩的讲解。小D被小T的神犇气场所折服,他知道小T之所以没有同步赛满分是不屑于,于是他决定拜小T为师。一日小T正在给小D讲解后缀数组。“把一个字符串的所...原创 2019-01-28 21:10:23 · 232 阅读 · 0 评论 -
[jzoj 4255] ACM {DP+优化}
题目DescriptionZagreb大学的ACM队伍(由三个人组成)正在打Final。他们的技术指导提出了一个牛逼的策略如下。在一开始,队伍的每一个人会评估每一道题的难度,难度会用1~5的整数表示,数字越大题目越难。然后他们会分配题目给每个人。题目会分成三个部分,每个队员会拿到一个非空的连续的题目代表了他要解决的问题。他们的策略是让难度评估系数最小。难度评估系数是三个队员对各自所拿到题目的...原创 2019-01-31 23:57:22 · 275 阅读 · 0 评论 -
[jzoj 4224] 食物 {多重背包}
题目解题思路很容易看出题面给出的是让我们求一遍01背包和完全背包。但是这肯定会超时:那么对于01背包,我们用二进制优化对于完全背包,我们讲完全背包的方程的状态与答案换一下,因为花费最多50000代码二进制优化01背包+完全背包#include<cstdio>#include<algorithm>#include<cstring>#d...原创 2019-01-26 17:54:12 · 258 阅读 · 0 评论 -
[jzoj1274] 游历的路线 {DP}
题目Description 我们的郭嘉大大经过一段时间发现了袁绍这个人干大事而惜身,见小利而忘义,又逢曹操在招兵买马,决定逃离袁绍去投曹操,而我们的曹操在第M天招募良材,我们的郭嘉大大既不能早去,也不能晚去,于是乎,他就趁着这一段时间到其他的城市游历一番,而每两个城市之间只能坐马车来往,由于我们的郭嘉大大很贪钱,他想用最少的费用,所以需要我们帮他求出这一个最小的费用。Input ...原创 2019-01-26 17:45:56 · 296 阅读 · 0 评论 -
[jozj 5354] 导弹拦截 {线性动态规划+匈牙利算法}
题目Description某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统。敌国的导弹形成了立体打击,每个导弹可以抽象成一个三维空间中的点(x; y; z)。拦截系统发射的炮弹也很好地应对了这种情况,每一发炮弹也可以视为一个三维空间中的点。但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达三维空间中任意的点,但是以后每一发炮弹到达点的坐标(x; y; z) 的三个坐标值都必须大于...原创 2018-12-30 17:16:38 · 427 阅读 · 0 评论 -
jzoj 100044. 【NOIP2017提高A组模拟7.13】abcd {二进制优化多重背包}
题目DescriptionInput输入文件共 N+1 行。第 1 行包含1个正整数N。第 i+1 行包含4个整数a[i],b[i],c[i],d[i]。Output输出文件名为abcd.out。输出共1行,包含1个整数,表示所给出公式的最大值。输入数据保证一定有解。解题思路这类似于一个多重背包的问题,给出n个物品,每个物品可以选a[i]到b[i]件,体积为c[i],价值...原创 2018-12-15 17:06:26 · 235 阅读 · 0 评论 -
[JZOJ 2938] 分割田地 {动态规划}
文章目录题目DescriptionInputOutput结题思路代码题目Description地主某君有一块由2×n个栅格组成的土地,有k个儿子,现在地主快要终老了,要把这些土地分给这些儿子。分给每个儿子的土地最小的单位是一个栅格,同时,分给同一个儿子的土地要求要相邻连续的。地主觉得分给某个儿子的土地面积至少有一个栅格,但是具体多少可以随意。请问,聪明的你,能够算出地主一共有多少种分...原创 2018-10-21 12:01:38 · 428 阅读 · 0 评论 -
[JZOJ 5195] 【NOIP2017提高组模拟7.3】A//2018.10.29 {动态规划}
题目解题思路动态规划我们可以将方案分成两种:至少包含一个 111 的;一个 111 都不包含。设f[i][j]f[i][j]f[i][j]表示答案,那么表示111的答案即为f[i−1][j−1]f[i-1][j-1]f[i−1][j−1],表示222的答案即为f[i][j−1]f[i][j-1]f[i][j−1](相当于把每个数都加上111),所以有:,时间O(nk)O(...原创 2018-10-29 13:47:33 · 174 阅读 · 0 评论 -
[JZOJ5907]轻功{DP}
题目解题思路设f[i][j]f[i][j]f[i][j]表示跳到第i ii个梅花桩,准备用jjj轻功跳下一个梅花桩的最小时间花费。那么很明显我们要枚举是用哪一个轻功飞到第iii个梅花桩的。那么再在第三重循环kkk枚举。那么如果j=kj=kj=k,就不用花费sss去切换,就有:f[i][j]=min(f[i][j],f[i−a[j].f][k]+a[j].t) f[i][j]=mi...原创 2018-10-31 21:46:08 · 175 阅读 · 0 评论 -
[JZOJ 5184] Gift {01背包变形}
题目解题思路01背包变形f[i][j]f[i][j]f[i][j]表示 1∼i1 \sim i1∼i不选,耗费jjj费用的方案数。初始化f[n+1][0]=1f[n+1][0]=1f[n+1][0]=1动态规划转移方程为f[i][j]=(f[i+1][j]+(j&gt;a[i]?f[i+1][j−a[i]]:0))% modf[i][j]=(f[i+1][j]+(j...原创 2018-10-27 16:07:00 · 212 阅读 · 0 评论 -
[JZOJ 5178] So many prefix? {KMP+DP}
题目Sample Input样例一:abababc样例二:isdashagayisdashagaydashisnotagaydashisnotagaySample Output样例一:6样例二:30解题思路KMP+DPKMP+DPKMP + DPKMP+DP,考虑KMPKMPKMP中的 next[i]next[i]next[i],代表最大的 k(k!=i)k(k != ...原创 2018-10-27 16:21:58 · 198 阅读 · 0 评论 -
[luogu U54181] 【NOIP 考后欢乐赛】 Mr.Lee 的评测机{01背包}
题目https://www.luogu.org/problemnew/show/U54181解题思路很明显,评测机评测次数越多就越好,所以这就是一个01背包。对于每组数据,就判断一下算出来的最大评测次数是否达到当前的评测点的应评测次数,累加即可。代码#include&lt;cstdio&gt;#include&lt;algorithm&gt;using namespace std...原创 2018-12-01 16:33:53 · 179 阅读 · 0 评论 -
[luogu 1107] [BJWC2008]雷涛的小猫 {DP}
题目https://www.luogu.org/problemnew/show/P1107解题思路设f[i][j]f[i][j]f[i][j]表示iii高度在第jjj棵树的最优值,a[j][i]a[j][i]a[j][i]表示第jjj棵树iii高度的个数。f[i][j]=f[i+1][j]+a[j][i]f[i][j]=f[i+1][j]+a[j][i]f[i][j]=f[i+1][j...原创 2018-12-08 12:50:22 · 228 阅读 · 0 评论 -
[poj 1821] Fence {单调队列优化dp}
题目http://poj.org/problem?id=1821解题思路先把所有工匠按照SiS_{i}Si排序,这样,每个工匠粉刷的木板一定在上一个工匠粉刷的木板之后。设F[i,j]F[i,j]F[i,j]表示安排前iii个工匠粉刷前jjj块木板,工匠们能获得的最多报酬:F[i,j]=F[i−1,j]F[i,j]=F[i-1,j]F[i,j]=F[i−1,j]F[i,j]=F[i...原创 2018-12-05 17:47:43 · 180 阅读 · 0 评论 -
[jzoj 3056] 数字 {容斥+dp}
题目Description【问题描述】一个数字被称为好数字当他满足下列条件:它有2*n个数位,n是正整数(允许有前导0)构成它的每个数字都在给定的数字集合S中。它前n位之和与后n位之和相等或者它奇数位之和与偶数位之和相等例如对于n=2,S={1,2},合法的好数字有1111,1122,1212,1221,2112,2121,2211,2222这样8种。已知n,求合法的好数字的个数...原创 2019-03-09 11:09:48 · 505 阅读 · 0 评论 -
[jzoj 1286] 太空电梯 {判定性dp}
题目Description 奶牛们想用K(1<=K<=400)中石块制造一个太空电梯去太空旅行,每种石块有自己的高度h_i(1<=h_i<=100)和数量c_i(1<=c_i<=10),为了避免宇宙射线的干扰,每种石块不能超过最高可以达到的高度a_i(1<=a_i<=40000)。 帮助奶牛用石块堆积一个最高的太空电梯。Input 第...原创 2019-03-16 16:21:29 · 416 阅读 · 0 评论 -
[luogu 3957] [2017 普及组]跳房子 {单调队列优化dp}
题目https://www.luogu.org/problemnew/show/P3957解题思路我们可以先二分答案。然后,设f[i]f[i]f[i]表示到第i个时的最优解,方程易得f[i]=max{f[i],f[j]+a[i]}f[i]=\max \left \{ f[i],f[j]+a[i] \right\}f[i]=max{f[i],f[j]+a[i]}但是对于f[j]f[j]...原创 2019-03-31 13:26:03 · 214 阅读 · 0 评论 -
[jzoj 6309] 完全背包
题目解题思路正如题目一样,这道题目肯定是一道完全背包坦白说,我根本就没有注意到题目给出的范围a[i]<=100a[i]<=100a[i]<=100,一开始只是以为题目想把数据控制在intintint以内。这么一道数据水到连贪心都可以过的题目!!!我们可以想到在同一个价格的时候,肯定是要选价值越大的了,这样就只剩下100种物品了。然后呢?预处理出...原创 2019-08-18 14:42:45 · 126 阅读 · 0 评论 -
[jzoj 6313] Maja {dp}
题目Description蜜蜂 Maja 到了一片草地,草地可以被描述成 N 行 M 列的网格图,在第 i 行第 j 列的位置上有 C_{i,j} 朵未授粉的花。Maja 会从第 A 行第 B 列出发,每次只能移动到与当前位置四相邻的格子上,且不能移动到草地以外。每到达一个格子,她会把此处所有未授粉的花都授粉。然而,当 Maja 离开一个格子,此处又会长出 C_{i,j} 朵未授粉的花。...原创 2019-08-21 20:51:46 · 160 阅读 · 0 评论 -
[jzoj 6312.] lottery {前缀和/dp}
题目Description定义两个序列对应位置上不同的值的个数不超过 k,则可称为 k 相似。现在有一个长度为 n 的序列 a,将它划分为 n−l+1 个长度为 l 的子串(第 i 个子串为 a[i]~a[i+l-1])q 组询问,第 j 组询问给出一个 kj,求每个子串与多少个其它的子串可称为 kj 相似。解题思路代码#include<cstdio> #inclu...原创 2019-08-21 07:41:37 · 188 阅读 · 0 评论 -
[jzoj 6296] 2019.08.12【NOIP提高组A】投票 {dp}
题目解题思路将pip_ipi 从小到大排好序,则存在一个最优方案,其中选择的同学是一段前缀和一段后缀。prei,j suri,jpre_{i,j}\ sur_{i,j}prei,j suri,j表示选择前/后iii个同学,有jjj个投"好"的概率。代码#include<cstdio>#include<algorithm>#d...原创 2019-08-15 19:38:26 · 156 阅读 · 0 评论 -
[jzoj 6311][luoguP5307] [COCI2019] Mobitel {dp优化/组合}
题目https://www.luogu.org/problem/P5307解题思路总路径数是个组合数,所以考虑求补集问题,即乘积<=n-1的路径条数考虑dp设f[i,j,k]表示走到(i,j)数字乘积为k的路径数暴力的复杂度为O(n*rs)考虑优化状态数设f[i,j,k]表示走到(i,j),数字乘积=x且满足(n-1)/x=k的方案数则k的种类数只有O(n)O(\sqr...原创 2019-08-20 21:09:47 · 182 阅读 · 0 评论 -
[luogu P2657] [SCOI2009]windy数{数位dp}
题目https://www.luogu.org/problem/P2657解题思路特别水的一道数位dp代码#include<cstdio>#include<cstring>#define rep(i,x,y) for(register int i=x;i<=y;++i)using namespace std;long long n,m,a[50]...原创 2019-08-19 19:56:09 · 111 阅读 · 0 评论 -
[jzoj 2679] 跨时代 {暴力状压+背包}
题目Description钟逆时针而绕,恶物狰狞的倾巢,我谦卑安静地于城堡下的晚祷,压抑远古流窜的蛮荒暗号,而管风琴键高傲的说,那只是在徒劳。我的乐器在环绕,时代无法淘汰我霸气的皇朝。 你无法预言,因为我越险,翅越艳;没有句点,跨时代蔓延,翼朝天。 月下浮雕,魔鬼的浅笑,狼迎风嚎,蝠翔似黑潮,用孤独去调尊严的色调。我跨越过世代,如兽般的姿态,琴声唤起沉睡的血脉。不需要被崇拜,如兽般的悲哀,只为...原创 2019-07-06 16:21:22 · 181 阅读 · 0 评论 -
[bzoj 3758] [jzoj 3362] 数数 {打表+二进制优化背包}
题目https://www.lydsy.com/JudgeOnline/problem.php?id=3758解题思路我copycopycopy了ymwymwymw大佬copycopycopy的表。就是先暴力求出每个从1开始累积到i的点,只要每间隔10610^{6}106就记录一次。答案显然是ans[r]−ans[l−1]ans[r]-ans[l-1]ans[r]−ans[l−1]然...原创 2019-07-12 20:36:33 · 187 阅读 · 0 评论 -
[loj #2687] 「BalticOI 2013」Vim {线头DP}
题目https://loj.ac/problem/2687解题思路代码原创 2019-07-08 22:38:11 · 285 阅读 · 0 评论 -
[poj 3666] Making the Grade {动态规划}
水题一道原创 2019-07-07 22:45:13 · 246 阅读 · 0 评论 -
CF13C Sequence {动态规划}
题目https://www.luogu.org/problemnew/show/CF13C解题思路变化后的每一个值肯定是等于原来序列的某个值,因为只需要变为非递减的,所以对于某个数要么不变,要么变成左右附件的某个值。这样我们就可以根据前述条件得出DP方程了:f[j]={f[j−1],f[j−1]+abs(a[i]−b[j])}\large f[j]=\begin{Bmatrix}f...原创 2019-07-07 22:42:34 · 331 阅读 · 0 评论 -
[poj 1737] Connected Graph {高精度+动态规划}
题目http://poj.org/problem?id=1737解题思路设F[i]F[i]F[i]表示iii个节点的无向连通图个数,状态转移方程为:F[i]=2i∗(i−1)/2−∑j=1i−1F[j]∗Ci−1j−1∗2(i−j)∗(i−j−1)/2\large F[i]=2^{i*(i-1)/2}-\sum_{j=1}^{i-1}F[j]*C_{i-1}^{j-1}*2^{(i-j)...原创 2019-07-07 19:52:00 · 224 阅读 · 0 评论 -
[tyvj 1098] 任务安排 {动态规划}
题目http://www.joyoi.cn/problem/tyvj-1098解题思路可以设f[i][j]f[i][j]f[i][j]表示前iii个中分成jjj批的最优解,f[i][j]=min(f[k][j−1],f[)f[i][j]=min(f[k][j-1],f[)f[i][j]=min(f[k][j−1],f[)可以用费用提前计算的方法将时间复杂度降低到O(n2)O(n^2)O(...原创 2019-05-18 17:16:09 · 358 阅读 · 0 评论 -
[jzoj1758] 过河 {简单dp}
题目Description 在BYTELAND的许多市民极喜爱那些逻辑思考与物理技巧同样重要的运动。有一种运动是过HEX河——BYTELAND中最宽的河流。有n根柱子,从1到n进行编号(从左至右),跨过这条河流。市民过河不得不如此:从河的左岸走至一根柱上,可能再走到下一根柱上,如此下去,最后到达河右岸。左岸有一根柱子设置在柱子1的左侧,右岸有一根柱子设置在柱子n的右侧。 在0时刻,有一市...原创 2019-05-21 18:28:49 · 130 阅读 · 0 评论