dp
y_immortal
蒟蒻蒟蒻
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
P4363 [九省联考2018]一双木棋chess(状压dp+记忆化搜索)
qwq据说这个题有好多种乱搞的做法。这里主要介绍的是,状压轮廓线的做法。首先,我们会发现,已经放过的棋子和棋盘的左边界和上边界构成一个轮廓线,如果我们将向上看成是0,向下看成是1的画,那么我们的初始状态就是形如000000111111000000111111000000111111,而目标状态就是形如111111000000111111000000111111000000的一个东西,经过仔细...原创 2019-03-22 13:44:58 · 253 阅读 · 0 评论 -
CF49E Common ancestor(dp+dp+dp)
题目链接纪念卡常把自己卡死的一次自闭模拟赛QWQ一开始看这个题,以为是个图论,仔细一想,貌似可以直接dp啊。首先,因为规则只有从两个变为1个,貌似可以用类似区间dpdpdp的方式来checkcheckcheck一段区间能不能合成某一个字母!那我们定义f[i][j][k]f[i][j][k]f[i][j][k]表示第一个串,[l,r][l,r][l,r]区间,是否可以合成kkk这个字母然...原创 2018-12-12 11:56:41 · 185 阅读 · 2 评论 -
洛谷4056 [JSOI2009]火星藏宝图(斜率优化+dp)
qwq又要吐槽一句我菜的真实。由于网上很多O(nm)O(nm)O(nm)做法,这里就不做赘述了。我这里只写一下O(m2)O(m^2)O(m2)的做法。首先我们定义一个dp[i][j]dp[i][j]dp[i][j]表示到(i,j)(i,j)(i,j)这个坐标的岛的最大收益。然后我们考虑转移,首先对于同一列来说,只有截止到iii行之前的行数最大的那个点才有可能作为转移点。这样一个图,如果...原创 2018-12-28 17:02:54 · 276 阅读 · 0 评论 -
洛谷2151[SDOI2009]HH去散步(dp+矩阵乘法优化)
一道良好的矩阵乘法优化dpdpdp的题。首先,一个比较naivenaivenaive的想法。我们定义dp[i][j]dp[i][j]dp[i][j]表示已经走了iii步,当前在点jjj的方案数。由于题目中限制了不能立即走之前走过来的那个点,所以这个状态并不能优秀的转移。尝试重新定义dpdpdp状态。令dp[i][j]dp[i][j]dp[i][j]表示已经走了iii步,当前在jjj这条边...原创 2018-12-23 10:23:49 · 696 阅读 · 0 评论 -
洛谷3216 HNOI2011 数学作业(矩乘优化递推)
题目链接首先我们考虑,正常的O(n)O(n)O(n)复杂度的计算应该如何计算我们令f[i]f[i]f[i]表示用1−i1-i1−i这些数能拼出来的数是多少那么f[i]=(f[i−1]∗10i的位数+i)mod  mf[i]=(f[i-1]*10^{i的位数}+i) \mod mf[i]=(f[i−1]∗10i的位数+i)modmQW...原创 2018-12-17 16:58:10 · 174 阅读 · 0 评论 -
洛谷2120 [ZJOI2007]仓库建设(斜率优化dp)
感觉和锯木厂那个题很类似的。其实这个题还那个题唯一的区别就是dpdpdp转移式子中的fff变成了gggqwq不想多说了直接看我的前一篇题解吧qwq#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>#include<cmath>#in...原创 2018-12-28 07:45:57 · 186 阅读 · 0 评论 -
洛谷4838 P哥破解密码(dp+矩乘优化)
题目链接qwq一看数据范围就知道这个题的做法首先我们先考虑一个朴素的dp我们令f[i][0/1/2]f[i][0/1/2]f[i][0/1/2]表示到了第iii位,有连续0,1,20,1,20,1,2个AAA的方案数。显然,如果当前位置填BBB。就相当于当前位置有0连续个A,那么前i−1i-1i−1位填0,1,20,1,20,1,2都是合法的如果当前位置填AAA那么就相当于当前位置有...原创 2018-12-17 16:20:06 · 365 阅读 · 0 评论 -
洛谷4360[CEOI2004]锯木厂选址 (斜率优化+dp)
qwq我感觉这都已经不算是斜率优化dpdpdp了,感觉更像是qwq一个下凸壳优化下凸壳优化下凸壳优化转移递推式子。qwq首先我们先定义几个数组sw[i]sw[i]sw[i]表示w[i]w[i]w[i]的前缀和val[i]=w[i]×d[i]val[i] = w[i]\times d[i]val[i]=w[i]×d[i]sum[i]sum[i]sum[i]表示val[i]val[i]va...原创 2018-12-27 19:57:46 · 204 阅读 · 0 评论 -
洛谷3648 [APIO2014]序列分割(斜率优化+dp)
首先对于这个题目。qwq存在一个性质就是,最终的答案只跟你的分割的位置有关,而和顺序无关。举一个小栗子a b ca\ b\ ca b c将这个东西分成两块。如果我们先分割ababab之间的话,ans=a∗(b+c)+b∗cans = a*(b+c) + b*cans=a∗(b+c)+b∗c如果先分割bcbcbc之间的话,ans=c∗(a+b)...原创 2018-12-27 17:01:39 · 354 阅读 · 1 评论 -
洛谷3571 POI2014 SUP-Supercomputer (斜率优化)
一道神仙好题。首先看到有多组kkk,第一反应就是离线。考虑贪心。我们每次一定是尽量选择有儿子的节点。以便于我们下一次扩展。但是对于一个kkk,每次贪心的复杂度是O(n)O(n)O(n)总复杂度是O(nq)O(nq)O(nq),肯定过不了。qwq那我们只能来考虑一个快速求一个kkk的答案。感觉题解的柿子好神仙啊。这里定义f[i]f[i]f[i]表示k=ik=ik=i的时候的最小次数...原创 2018-12-29 08:43:04 · 248 阅读 · 0 评论 -
dp凸优化/wqs二分学习笔记(洛谷4383 [八省联考2018]林克卡特树lct)
qwq安利一个凸优化讲的比较好的博客https://www.cnblogs.com/Gloid/p/9433783.html但是他的暴力部分略微有点问题qwq我还是详细的讲一下这个题+这个知识点吧。还是先从题目入手。首先我们分析题目。因为题目要删除kkk条边,然后再新建kkk条边,求两点的路径和。那我们不妨这么考虑,对于新连接一条边,相当于链接了原树上的两条链,且链不存在交点。...原创 2018-12-29 19:34:37 · 347 阅读 · 0 评论 -
洛谷3176 [HAOI2015]数字串拆分 (矩阵乘法+dp)
qwq真的是一道好题qwq自己做基本是必不可能做出来的。首先,如果这个题目只是求一个fff数组的话,那就是一道裸题。首先,根据样例 根据题目描述,我们能发现其实同样数字的不同排列,也是属于不同的方案的,那统计起来其实方便很多。首先我们发现,对于iii这个数,他可以拆出来[1,m][1,m][1,m]任何一个数,接在对应的f[i−1]到f[i−m]f[i-1]到f[i-m]f[i−1]到f[i...原创 2018-12-25 09:10:09 · 695 阅读 · 0 评论 -
校内模拟赛 (状压dp)
某校内模拟赛T1T1T1据说原题是projectEulerproject EulerprojectEuler的。给定一个长度为nnn的序列,求出任意非空子集的lcmlcmlcm之和,对109+710^9+7109+7取膜其中n≤2000,ai≤200n\le 2000 ,a_i \le 200n≤2000,ai≤200考虑到aia_iai的范围特别小,我们不妨在此考虑突破口,我们会发现...原创 2019-02-27 12:07:11 · 281 阅读 · 0 评论 -
决策单调性学习笔记 + spoj9070 LIGHTIN - Lightning Conductor (决策单调性+双端队列)
qwq自闭,啥都不会。首先我们不难发现题目中的要求可以转化成p≥max(aj+(i−j))−aip \ge max(a_j+\sqrt {(i-j)}) - a_ip≥max(aj+(i−j))−ai那么这个东西怎么做呢?qwq貌似同时考虑两个方向的贡献,并不是特别好处理,那不妨我们从前做一遍,从后做一遍,每次只考虑前面的点对于后面的点的贡献,然后两次直接取maxmaxmax就o...原创 2019-02-23 10:55:23 · 223 阅读 · 0 评论 -
洛谷2150 [NOI2015]寿司晚宴 (状压dp+思维)
真的是一道好题qwq思路很巧妙的啊。。首先根据题目描述,我们不难想到通过质因子来限制那个要求也就是说,我们对于同一个质因子只能分配给一个人。那么对于那个小的数据范围,也就是n≤30n\le 30n≤30f[s1][s2]f[s1][s2]f[s1][s2]表示A选了s1集合,B选了s2的集合A选了s1集合,B选了s2的集合A选了s1集合,B选了s2的集合的方案数然后对于一个新的物品(防...原创 2019-02-23 00:11:43 · 199 阅读 · 0 评论 -
bzoj3717 [PA2014]Pakowanie (状压dp)
qwq貌似看起来很简单的一个题…但是貌似复杂度写的有点假。我们令f[s]f[s]f[s]表示已经装进了集合sss中的物品的最少花费的背包数量,然后g[s]g[s]g[s]则表示最后一个背包最多剩下多少的体积。qwq但是我们发现,由于我们不能够状压背包,那我们就需要考虑一下该怎么处理背包这个问题。一个比较显然的想法,我们优先使用体积大的背包。因为我们是状压dp,所以这个顺序是对的,不会出现那...原创 2019-02-21 20:46:47 · 201 阅读 · 0 评论 -
PKUWC2019 day1t1 (状压dp)
其中n≤20n\le 20n≤20qwq由于这个数据范围,不难想到状压dpdpdp我们令f[s]f[s]f[s]表示只考虑sss集合中的点的拓扑序(也就是sss中的点已经在拓扑序里),贡献总和是多少。考虑从sss转移到s∣(1&lt;&lt;i)s | (1&lt;&lt;i)s∣(1<<i)对于iii这个点来说,只能保留出发点是sss中的边,...原创 2019-02-04 11:56:14 · 374 阅读 · 0 评论 -
洛谷4895 独钓寒江雪 (树哈希+dp+组合)
qwq首先,如果是没有要求本质不同的话,那么还是比较简单的一个树形dp我们令dp[i][0/1]dp[i][0/1]dp[i][0/1]表示是否iii的子树,是否选iii这个点的方案数。一个比较显然的想法。dp[i][0]=∏(dp[p][0]+dp[p][1])dp[i][0]=\prod (dp[p][0]+dp[p][1])dp[i][0]=∏(dp[p][0]+dp[p][1])...原创 2019-01-14 20:53:19 · 214 阅读 · 0 评论 -
洛谷3195 [HNOI2008]玩具装箱TOY(斜率优化+dp)
qwq斜率优化好题第一步还是考虑最朴素的dpdpdpdp=dp[j]+(i−j−1+sum[i]−sum[j])2dp=dp[j]+(i-j-1+sum[i]-sum[j])^2dp=dp[j]+(i−j−1+sum[i]−sum[j])2设f[i]=sum[i]+if[i]=sum[i]+if[i]=sum[i]+i那么考虑将上述柿子变成dp[i]=dp[j]+(f[i]−f[j]−1−...原创 2018-12-25 16:55:18 · 185 阅读 · 0 评论 -
hdu3507 斜率优化学习笔记
QWQ菜的真实。首先来看这个题。很显然能得到一个朴素的dpdpdp柿子dp[i]=max(dp[i],dp[j]+(sum[i]−sum[j])2)dp[i]=max(dp[i],dp[j]+(sum[i]-sum[j])^2)dp[i]=max(dp[i],dp[j]+(sum[i]−sum[j])2)但是因为n≤500000n\le 500000n≤500000,所以n2n^2n2一定...原创 2018-12-25 14:39:29 · 230 阅读 · 0 评论 -
洛谷2900 [USACO08MAR]土地征用Land Acquisition (斜率优化+dp)
自闭的一批…为什么斜率优化能这么自闭。首先看到这个题的第一想法一定是按照一个维度进行排序。那我们不妨直接按照hih_ihi排序。我们令dp[i]dp[i]dp[i]表示到了第iii个矩形的答案是多少。之后我们会发现,对于dp[i]dp[i]dp[i]的转移dp[i]=dp[j−1]+h[j]∗mn[j][i]dp[i]=dp[j-1]+h[j]*mn[j][i]dp[i]=dp[j−1...原创 2018-12-27 16:48:37 · 269 阅读 · 0 评论 -
洛谷4072 SDOI2016征途 (斜率优化+dp)
首先根据题目中给的要求,推一下方差的柿子。v×m2=m×∑x2−2×sum×sum+sum∗sumv\times m^2 = m\times \sum x^2 - 2 \times sum \times sum +sum*sumv×m2=m×∑x2−2×sum×sum+sum∗sum所以ans=v∗m2=m×∑x2−sum∗sumans = v*m^2 = m\times \sum x^2 -...原创 2018-12-26 14:28:32 · 187 阅读 · 0 评论 -
洛谷3628 APIO2010特别行动队(斜率优化)
考虑最普通的dpdpdpdp[i]=max(dp[j]+a∗(sum[i]−sum[j])2+b∗(sum[i]−sum[j])+cdp[i]=max(dp[j]+a*(sum[i]-sum[j])^2+b*(sum[i]-sum[j])+cdp[i]=max(dp[j]+a∗(sum[i]−sum[j])2+b∗(sum[i]−sum[j])+cqwq由于演算纸扔掉了qwq所以直接给出...原创 2018-12-26 14:15:17 · 219 阅读 · 0 评论 -
回归本心QwQ背包问题luogu1776
今天在这里说一下多重背包问题 对之前一直没有怎么彻底理解首先多重背包是什么?这里就不做过多的赘述了朴素的多重背包的复杂度是O(n∗m∗∑s[i])O(n∗m∗∑s[i])O(n*m*\sum s[i]),其中s[i]s[i]s[i]是每一件物品的数量for (int i=1;i<=n;i++) for (int k=1;k<=s[i];k++) ...原创 2018-07-10 16:30:42 · 255 阅读 · 0 评论 -
uoj22 外星人(dp)
题目大意: 给定一个nnn个数的序列aaa,给定一个xxx,其中aaa数组可以进行顺序的调换,每一个aiaia_i都能使x=xmodaix=xmodaix=x \mod a_i , 求最后经过一系列计算后的yyy,满足abs(x−y)abs(x−y)abs(x-y)尽可能小,并求出方案数QwQ 哇,一看到这个题。说实话,没什么好的思路。也就发现了几个性质:1.最后的yyy一定小于最...原创 2018-07-01 14:59:38 · 433 阅读 · 0 评论 -
bzoj2064分裂(dp)
题目大意: 给定一个初始集合和目标集合,有两种操作:1.合并集合中的两个元素,新元素为两个元素之和 2.分裂集合中的一个元素,得到的两个新元素之和等于原先的元素。要求用最小步数使初始集合变为目标集合,求最小步数。其中初始集合和目标集合的元素个数都不超过10个这是一道非常值得纪念的好题首先一看到这个数据范围,第一反应就是状压dp了我们首先这么考虑如果说直接暴力的合并和分裂的话,...原创 2018-06-25 12:54:32 · 256 阅读 · 0 评论 -
全网最最最最最详细的区间dp题目总结!!
QWQ最近在做一些区间dp的题,有感而发 嗯如果在阅读本文时遇到什么问题或者解法本身有什么漏洞,可以随时联系我 +q 752742355区间dp,顾名思义,就是解决一些区间内最优值的问题,通常的时间复杂度为n^2 或者 n^3而区间dp的大致思路就是首先确定状态初始化长度为1(or 2,3....具体因题而异)的dp数组的值然后枚举区间长度,枚举区间的起始点,(有的题目还需要枚举断点) 由小区间...原创 2018-04-26 15:50:52 · 10356 阅读 · 9 评论 -
bzoj2037 Sue的小球(区间dp,考虑到对未来的贡献)
题目大意直接从洛谷截取了大致意思就是现在你要不断的奔跑到不同的地点去接球,每一秒可以移动一个单位长度,而你接到一个球的动作是瞬间的,收益是y[i]-t*v[i] 然后呢,要求分数最高。起初看这个题目QWQ完全没有任何思路,大概只能想到......先按照x排序(记得把起始位置也加进去)然后令f[l][r]表示收集完l~r的球,最后在l的最大收益g[l][r]收集完l~r的球,最后在r的最大收益然后....原创 2018-04-28 12:41:56 · 296 阅读 · 0 评论 -
hdu3001(三进制状压)********
题目大意:现在给你一个有n个点和m条边的图,每一条边都有一个费用,每个点不能经过超过两次,求所有点至少遍历一次的最小费用其中n<=10 m没有明确限制(肯定不会超过1e5)一看到这个数据范围,第一想法就是状压QWQ但是转念一想,woc,每个点不一定只经过一次咯。woc,那不就是三进制状压?!好的,至此,这个题成功的成为了我人生中的第一道三进制状压f[S][i]表示已经走过的点的集合是S 当前...原创 2018-05-02 20:42:50 · 329 阅读 · 0 评论 -
bzoj1341 名次排序问题rank sorting(dp,考虑到对未来的贡献)
QWQ啊这个题可以说是我目前碰到过的最难理解的dp之一了。题目大意:已知参赛选手的得分,你的任务是按照得分从高到底给出选手的排名。遗憾的是,保存选手信息的数据结构只支持一种操作,即将一个选手从位置i移动到位置j,该移动不改变其他选手的相对位置,即如果i>j,位置j和位置i-1之间的选手的位置都比原来加1,相反如果i<j,则位置i+1和位置j之间的选手的位置都比原来减一。上述移动的操作的...原创 2018-05-03 16:00:21 · 316 阅读 · 1 评论 -
bzoj1065 NOI2008奥运物流 (dp,树上背包,推式子)
题目描述~简化一下题意就是:给定一颗基环树(n个点,n条边),设每个点的权值为w[i] 则 w[i]=c[i]+k*sigma(w[son[i]]),最多能修改m个点,使得w[1]最大QWQ一开始看这个题,没啥头绪只是有一些奇怪的想法:1.如果修改,一定是将一个点的后继修改到12.每一个点的贡献.....应该是可以推式子吧~带着这两个想法,我开始研究论文。首先,考虑到根是一个环,所以一个点对1的贡...原创 2018-05-07 17:43:16 · 441 阅读 · 0 评论 -
uoj279题目交流通道(dp)
题目大意:神犇星球有 nnn 座小城。对于任意两座小城 v,uv,uv,u(v≠u)(v≠u)(v≠u),吉米多出题斯基想在 v,uv,uv,u 之间建立一个传送时间为 w(v,u)w(v,u)w(v,u)的无向传送通道,其中 w(v,u)w(v,u)w(v,u) 为不超过 kkk 的非负整数。建成后,神犇星球的居民可从一座小城出发经过一个或若干个传送通道到达另一座小城交流题目,花费的时间为所...原创 2018-07-05 14:18:50 · 229 阅读 · 0 评论 -
洛谷luogu3957跳房子(单调队列优化)
QwQ被普及组的题折磨的死去活来。硬是卡线段树,没卡过QwQoi生涯,第一道正经的单调队列dp题进入正题题目大意: 其中n≤500000n≤500000n \le 500000看到这个题的第一感觉就是二分金币数很显然,如果midmidmid可以,那么mid+1mid+1mid+1一定可以但是QwQ不要想nlog2nnlog2nnlog^2n了(卡了一下午没卡过...原创 2018-07-12 15:01:27 · 312 阅读 · 0 评论 -
洛谷2149 Elaxia的路线
QwQ好久没更新博客了,颓废了好久啊,来补一点东西题目大意给定两个点对,求两对点间最短路的最长公共路径。其中n,m≤105n,m≤105n,m\le 10^5比较简单吧就是跑四遍最短路,然后把最短路上的边拿出来,跑一遍拓扑排序加dpdpdp就OK对于一条边u−>vu−>vu->v,满足dis[u]+w+disn[v]=dis[t]dis[u]+w+disn[v]...原创 2018-08-18 18:06:08 · 213 阅读 · 0 评论 -
洛谷4630APIO2018铁人两项(圆方树+dp)
题目链接QWQ神仙题啊(据说是今年第一次出现圆方树的地方)首先根据题目,我们就是求对于每一个路径(s,t)(s,t)(s,t)他的贡献就是两个点之间的点数,但是图上问题我并没有办法很好的解决。。。这时候考虑圆方树,我们将圆方树建出来之后,我们令方点的权值是他所连接的圆点之和,圆点的权值是−1-1−1。这里之所以让圆点的贡献是-1,是为了方便表示路径的贡献(不然貌似比较复杂)。如果我们这...原创 2018-12-06 19:51:50 · 307 阅读 · 0 评论 -
CF193D Two Segments (线段树+dp)(外加两个扩展题)
题目链接大概算是个系列整理(最强版是模拟赛原题))首先,我们先来看这个题目。QWQ一开始是毫无头绪,除了枚举就是枚举首先,我们可以枚举一个右端点,然后算一下当前右端点的答案我们令f[l,r]f[l,r]f[l,r]表示al到ara_l到a_ral到ar这些数,能够最少划分成几段连续的数。显然,我们要求的是以每个端点为右端点,f值&lt;=2的f值&lt;=2的f值...原创 2018-12-05 16:20:57 · 499 阅读 · 0 评论 -
CF536D Tavas in Kansas(博弈论+dp)
题目链接貌似洛谷的题面是没有翻译的QWQ大致题面是这个样子,但是可能根据题目本身有不同的地方完全懵逼的一个题(果然博弈论就是不一样)首先,我们考虑把题目转化成一个可做的模型。我们分别从sss和ttt跑两边全图最短路,这样,对于每个点,我们就能得到dis[i]dis[i]dis[i]和disn[i]disn[i]disn[i]。这时候,我们把每个图上的点,看成一个平面上的点(dis[...原创 2018-11-28 14:30:45 · 714 阅读 · 0 评论 -
LOJ6356 四色灯(容斥+dp
题目链接纪念第一次所有的解析全写在代码里面QWQ这里就简单说几句了首先一个灯有贡献,当且仅当他被按了4k4k4k次。那么我们定义f(S)f(S)f(S)表示[1,n][1,n][1,n]中有多少个数xxx是集合SSS中元素的公倍数f(S)=nlcmx∈Sxf(S) = \frac{n}{lcm_{x\in S} x}f(S)=lcmx∈Sxn这里需要注意的是,求lcmlcmlcm...原创 2018-11-28 10:07:23 · 440 阅读 · 0 评论 -
洛谷4103 HEOI2014大工程(虚树+dp)
题目链接又是一道虚树好题啊我们建出来虚树,然后考虑dp过程,我们分别令sum[x],mndis[x],mxdis[x],size[x]sum[x],mndis[x],mxdis[x],size[x]sum[x],mndis[x],mxdis[x],size[x]为子树内的路径长度和,最短链,最长链,子树内关键点个数。对于一个关键点,首先他的size=1,mndis=0size=1,mndis...原创 2018-11-27 16:46:28 · 211 阅读 · 0 评论 -
虚树学习笔记(洛谷2495 消耗战)
题目链接因为辣鸡csdn,导致之前快写好的博客没了QWQ悲伤逆流成河qwqqq首先虚树,这个东西,我感觉是一种思想,或者是方法,而并不是一个数据结构什么的。他主要是用来解决:给出一棵树,每次询问选择一些关键点,求一些信息。这些信息的特点是,许多未选择的点可以通过某种方式剔除而不影响最终结果。于是就有了建虚树这个算法。我们根据原树的信息重新建树,这棵树中要尽量少地包含非关键节点。 这棵树...原创 2018-11-27 11:46:45 · 316 阅读 · 0 评论
分享