
=====动态规划=====
Rayment_cc
++Rp
展开
-
BZOJ5381 HNOI2018省队集训 OR
ProblemBZOJ竟然是HN省队集训的题,出题人还贴心地把模数改成了998244353998244353998244353,好感动,我还以为HN省队集训都是一堆毒瘤出自己都不会/想做的题。原题应该是这个,只不过原题要MTT:Codeforces623E Transforming SequenceSolution首先 nnn 的范围是假的,因为要严格递增,每次 bib_ibi 至少会...原创 2019-05-20 22:25:18 · 554 阅读 · 0 评论 -
BZOJ4221 kangaroo
ProblemBZOJSolution想了一个下午不会做,然后发现有这么两篇题解,感觉思路好奇妙:clarispenth可以这样想,把袋鼠拆成两个点,上面是体积,下面是袋子,如果袋鼠a放到袋鼠b里去,则必须满足ax≤bya_x\leq b_yax≤by,即相当于在二分图上从上向下连线。那么其实这个就是要求最后局面中没有连线的mina>maxb\min a&...原创 2018-10-16 19:27:05 · 624 阅读 · 1 评论 -
dp优化学习笔记
ProblemBZOJ斜率优化原谅我之前做斜率优化题的时候都是在瞎bb,这才是靠谱的比如我们有个这样的式子,要求最大化Y=f[i]=A(i)+B(j)+C(i)D(j)Y=f[i]=A(i)+B(j)+C(i)D(j)Y=f[i]=A(i)+B(j)+C(i)D(j)我们可以先忽略A(i)A(i)A(i)则Y=C(i)D(j)+B(j)Y=C(i)D(j)+B(j)Y=C(i)D(j)...原创 2018-10-18 20:55:08 · 278 阅读 · 0 评论 -
有关一类容斥计数dp问题
容斥+dp是啥?能吃吗?原创 2018-10-06 15:07:03 · 828 阅读 · 0 评论 -
Codeforces 939F Cutlet
ProblemCodeForces大意就是一个长度为2n的01序列,给定k个不相交的区间,在区间内的元素允许与前一个元素不同,代价为1,要求使得01序列中0和1恰好是n个,问最小的代价。Solution可以设出这样的一个dp,f[i][j]表示到第i段结束,当前没烤的这面烤j分钟的最小翻面次数。如果你觉得这个状态不那么方便你也可以加一维0/1咯。有这么一个性质,在一段区间内只有不翻/翻1...原创 2018-10-02 18:08:22 · 337 阅读 · 0 评论 -
BZOJ 3925 ZJOI2015 地震后的幻想乡
ProblemBZOJ每条边都有一个[0,1]边权,求最小生成树中最大边的期望大小n个[0,1]的随机变量,第k小的期望是kn+1\frac k {n+1}n+1kSolution姑且不论为啥第k小的期望是kn+1\frac k {n+1}n+1k,那是题目中给的信息……我也不会证qwqqqMST上的最大边就是在kruskal的时候最后加入的边,那么就要求加到第i条边时联通的概率,...原创 2018-10-01 22:24:56 · 316 阅读 · 0 评论 -
BZOJ 2726 SDOI2012 任务安排
ProblemBZOJSolution不难设出一个不怎么样的状态f[i][j]表示前i个分j段的最小代价f[i][j]=min(f[k][j−1]+(S∗j+st[i])∗(sf[i]−sf[k]))f[i][j]=min(f[k][j−1]+(S∗j+st[i])∗(sf[i]−sf[k]))f[i][j]=\min(f[k][j-1]+(S*j+st[i])*(sf[i]-sf...原创 2018-09-13 20:21:31 · 221 阅读 · 0 评论 -
Codeforces 835F Roads in the Kingdom
ProblemCodeforces给你一棵基环树,定义直径为所有点对最短距离的最大值。要求你在环上删一条边,最小化剩余树的直径。保证没有二元环。Solution先吐槽:基环树,仙人掌什么的都是用来恶心人的。还有这题网上代码长得怎么都一样??先把环拆出来,考虑枚举环上删的边edge(ci,ci+1)edge(c_{i},c_{i+1})edge(ci,ci+1)那么分三种情况1...原创 2018-09-18 14:47:34 · 417 阅读 · 0 评论 -
POJ 3682 King Arthur's Birthday Celebration
ProblemPOJ 正面的概率为p,掷k次正面就停止,求期望掷多少次。Solution设f[i]表示掷i次的期望f[i]=1+p∗f[i+1]+(1−p)f[i]f[i]=1+p∗f[i+1]+(1−p)f[i]f[i]=1+p*f[i+1]+(1-p)f[i]f[i]=1p+f[i+1]f[i]=1p+f[i+1]f[i]=\frac 1 p+f[i+1]f[k]=0...原创 2018-09-11 09:30:10 · 260 阅读 · 0 评论 -
期望的逆推 及 HDU 4652 Dice
ProblemHDUSolution鉴于Rayment的期望dp实在是太差了,他只好写一些套路的水题了……什么叫期望的逆推呢。。?那就是对于现在的状态S,我们去考虑它的所有后继状态T1,T2⋯TmT1,T2⋯Tm{T_1,T_2\cdots T_m},且各个后继发生的概率是p1,p2⋯pmp1,p2⋯pmp_1,p_2\cdots p_m和它们分别的转移代价c1,c2⋯cmc1...原创 2018-09-10 22:26:38 · 667 阅读 · 0 评论 -
LOJ 2538 PKUWC2018 Slay the Spire
ProblemLOJSolution一道假的期望DP,其实就是考求和。。显然出牌顺序必然是先出强化牌,再出攻击牌。那么要怎么组织出多少牌呢。。如果是出k张牌,那么必然是出k-1张强化牌,再打出一张最大的攻击牌。因为至少强化一倍,即如果替换掉一张强化牌而搞成攻击牌,原本受到的伤害为A∗mxA∗mxA*mx,更改后变为Ak∗(mx+mx2)Ak∗(mx+mx2)\frac A k*...原创 2018-09-12 17:25:30 · 470 阅读 · 0 评论 -
Codeforces413E Maze 2D加强版
ProblemCodeforcesn≤5,m≤2×105,q≤5×104n\leq 5,m\leq 2\times10^5,q\leq 5\times 10^4n≤5,m≤2×105,q≤5×104要求支持修改某个格子的可走状态。Solution感觉想法很新奇的一道题,但是后来boshi告诉我这是动态dp的套路题……所以就当是动态dp入门题了吧我们用一个n2n^2n2的矩阵来代表一个区...原创 2018-10-10 17:33:54 · 282 阅读 · 1 评论 -
Codeforces958C3 Encryption (hard)
ProblemCodeforcesSolution是一道很有意思的题目。首先你可以写出一个最暴力的方程,设f[i][j]f[i][j]f[i][j]表示前j个位置分i段的最小代价f[i][j]=min(f[i−1][k]+(sum[j]−sum[k]) mod p)f[i][j]=\min (f[i-1][k]+(...原创 2018-10-22 18:37:54 · 401 阅读 · 0 评论 -
分糖果
Problem有一个n个元素的环,第i个元素的取值范围为[1,ai][1,a_i][1,ai],要求相邻的元素不能相等,问有多少种不同的赋值方法,答案对109+710^9+7109+7取模。n≤106,ai≤109n\leq 10^6,a_i\leq 10^9n≤106,ai≤109Solution考虑容斥。根据容斥的方程我们会发现可以直接考虑其奇偶性,设f[i][0/1]f[i][0...原创 2018-10-22 22:00:09 · 445 阅读 · 0 评论 -
UOJ394 NOI2018 冒泡排序
ProblemUOJSolution对于排列中的一个数,如果它前面有 kkk 个大于它的数,那么它一定会向前走 kkk 步,而这每一步都不能浪费才能达到下界,因此一个数的前面要么全都比它小,要么所有比它小的数都出现了在它的前面。然后画画图,发现这其实等价于序列的最长下降子序列长度不超过2。这样我们就可以设 f[i][j]f[i][j]f[i][j] 表示前 iii 个数最大值为 jjj 的...原创 2019-05-05 13:58:06 · 287 阅读 · 0 评论 -
BZOJ4944 NOI2017 泳池
ProblemBZOJSolution据说当场10+的人数很少,虽然是道好题,但是不是毒瘤过头了啊QAQ恰好面积为 kkk 并不好处理,不妨求面积小于等于 kkk,则最后答案为 P(k)−P(k−1)P(k)-P(k-1)P(k)−P(k−1)。为了方便描述,我们约定从最下方的行开始编号为第1行,qqq 表示块安全的概率。考虑第1行,由于面积都要小于等于 kkk,则第一行不会连续出现 ...原创 2019-05-03 22:25:12 · 307 阅读 · 0 评论 -
UOJ223 NOI2016 国王饮水记
ProblemUOJSolution经过 瞎猜 思考可以得到以下性质:所有高度小于首都的水箱肯定不会参与联通。选择联通的水箱必然是从某一个水箱开始的连续的知道选到最高的水箱。因为如果中间有间隔,那么完全可以把前面的水箱舍弃掉最小的,然后换成间隔的较大的。如果要联通多次水箱,必然是先与相对较低的水箱联通,再与相对较高的水箱联通。否则交换顺序更优,可以推推式子证明。kkk 最大取 n−...原创 2019-03-22 18:48:44 · 428 阅读 · 0 评论 -
BZOJ3515 Evenpaths
ProblemBZOJSolution看到数据范围,考虑折半搜索。按照拓扑序,把关键点集平分为左右两边来考虑。如果我们dp出0到点x的路径条数 pxp_xpx,点x到1的路径条数 sxs_xsx,那么被这个点计数的路径条数显然是 px×sxp_x\times s_xpx×sx。对于一条路径,我们用第一次经过的右半边的关键点(可能没有障碍)来计数,因此顺便把1号点也设为关键点。这样 ...原创 2019-02-19 22:45:11 · 418 阅读 · 0 评论 -
PE 559 Permuted Matrices
ProblemPE翻译版Solution122nd AC got! 先纪念一下…对于P(k,n,n)P(k,n,n)P(k,n,n),考虑容斥,设 rir_iri 表示有 ⌊nk⌋\lfloor \frac n k \rfloor⌊kn⌋ 个列中有至少 iii 个上升列的方案数。那么P(k,n,n)=∑i=0n/k(−1)iriP(k,n,n)=\sum_{i=0}^{n/k} ...原创 2019-02-03 15:49:34 · 475 阅读 · 0 评论 -
BZOJ3566 SHOI2014概率充电器
ProblemBZOJSolution不难写出一个O(n2)O(n^2)O(n2)的树形DP,即枚举一个点为根,然后就只要考虑儿子对它的影响了。那么再换根DP一下就行了。记f[x]f[x]f[x]为xxx不亮且儿子不能使它亮的概率,注意换根时考虑兄弟节点的影响要用条件概率,因为此时已经限制它不会使它的父亲节点亮。所以要记h[x]h[x]h[x]表示x不能点亮它父亲节点的概率。细节很多,要...原创 2019-01-07 18:45:59 · 246 阅读 · 0 评论 -
洛谷5156 Sort It Out
Problem洛谷Solution充分必要条件就是未被选择的数是单调上升的,要求最少,则需要求LIS。而被选择的字典序第k小也就对应着被选择的字典序第k大。那么我们考虑从高位到低位确定下来每一个数字,由此我们需要求出选了某个数之后的后继LIS方案数,用树状数组优化dp解决。然后我们就按顺序丢进vector里即可,注意其实这里vector内部是不需要排序的,因为我们是从前往后扫的,若同样长...原创 2019-01-10 21:49:08 · 311 阅读 · 0 评论 -
ARC101E Ribbons on Tree
ProblemAtCoderSolution发现ARC也有挺多比较有意思的题目……直接统计是很麻烦的,所以我们不妨考虑容斥。如果有F(S)F(S)F(S)表示SSS集合中的边未被覆盖的答案,那么用一下子集容斥就做完了。考虑f[x][i]f[x][i]f[x][i]表示x子树内有i个点未匹配的方案数,我们会发现当且仅当i=0i=0i=0时,x的父边是没有被覆盖的,根据子集反演会给我们带来-...原创 2018-12-18 19:56:15 · 394 阅读 · 0 评论 -
BZOJ1492 货币兑换NOI2007
ProblemBZOJSolutionC[i]C[i]C[i]则表示第i天持有的最多的RMB,那么当天持有的最多的金券则分别可以用其表示C[i]=maxj=1i−1(A[j]∗ai+B[j]∗bi)C[i]=\max_{j=1}^{i-1} (A[j]*a_i+B[j]*b_i)C[i]=j=1maxi−1(A[j]∗ai+B[j]∗bi)将C[i]C[i]C[i]中的ai,bi...原创 2018-12-19 22:31:46 · 210 阅读 · 0 评论 -
ARC072E Alice in linear land
ProblemAtcoderSolution考虑用g[i][j]g[i][j]g[i][j]表示当前位置离终点距离为jjj,执行[i,n][i,n][i,n]中的所有命令能否走到终点。然后你会发现如果要修改的话,按照贪心的思想,最优肯定是无法走到的最小的jjj作贡献,那么我们其实就只需要保存最小的无法走到的jjj是多少即可,用f[i]f[i]f[i]表示最大的数使得g[i][0]⋯g[i]...原创 2018-11-06 22:46:34 · 376 阅读 · 1 评论 -
BZOJ 2806 CTSC2012 熟悉的文章 cheat
ProblemBZOJSolution注意到答案具有单调性,不妨考虑二分答案。设f[i]表示询问串前i位能匹配的最大长度,那么我们容易写出如下dp方程,其中pi表示的是当前串能匹配的最大长度:fi=maxj∈[i−pi,i−L](fi−1,fj+i−j)fi=maxj∈[i−pi,i−L](fi−1,fj+i−j)f_i=\max_{j\in[i-p_i,i-L]}(f_{i-1}...原创 2018-08-24 14:57:36 · 317 阅读 · 0 评论 -
POJ 1739 Tony's Tour
珍惜生命,远离插头DP。原创 2018-08-23 08:36:31 · 195 阅读 · 0 评论 -
BZOJ 4872 六省联考2017 分手是祝愿
ProblemBZOJSolution感觉dp状态的设置好巧妙啊 首先要明确的是怎么计算最小步数。就是直接从n到1扫,如果有亮着的,就按这个开关,模拟一下是O(nlnn)O(nlnn)O(n\ln n)的 设f[i]表示在局面的最小步数为i时,转移到最少步数为i-1时的期望花费。只要是相应的灯,按的次序是不会影响答案的,那么i次就说明还需要按i个灯,则有i/n的概率到下一步,而有...原创 2018-07-04 21:49:38 · 428 阅读 · 0 评论 -
NOIP2015 子串
Problem偷个懒不会被发现的吧 NOIP的题目到处都找的到,我就不写了~~Solution思维难度还是有点高的哇……反正这个dp方程我是实在没推出来。 用f[j][k]表示取到a[i]位时,在b的前j位取k个子串的方案数;g[j][k]表示a的前i位,在b的前j位,取k个子串的方案数。状态转移方程见下。 代码奇短无比,这里用了一点降维的优化,将j倒着循环就可以实现滚动数组...原创 2017-10-26 13:48:15 · 447 阅读 · 1 评论 -
浅谈存在性背包问题
存在性背包的更优解法原创 2017-10-14 13:58:57 · 472 阅读 · 0 评论 -
[题解]关键子工程 拓扑排序+DP
题目大意有n个工程需要完成,对于第i个工程,完成需要T[i]的时间,各个工程可以同时进行。 在给你一个矩阵,描述第i个工程与第j个工程是否有依赖关系。对于这些依赖关系,在被依赖的工程完成前,此工程不能进行。若整个工程无法完成,那么输出-1。若可以完成,那么输出关键子工程。 关键子工程的定义是,只要某个工程一延期,就会导致整个工程的完成时间延后,那么就称它为关键子工程。输入样例5...原创 2017-08-24 17:17:32 · 487 阅读 · 0 评论 -
HDU4044 GeoDefense 树形dp
HDU4044 树形动归原创 2017-08-27 11:39:21 · 389 阅读 · 0 评论 -
BZOJ 3191 JLOI2013卡牌游戏 概率DP
ProblemProblem DescriptionN个人坐成一圈玩游戏。一开始我们把所有玩家按顺时针从1到N编号。首先第一回合是玩家1作为庄家。每个回合庄家都会随机(即按相等的概率)从卡牌堆里选择一张卡片,假设卡片上的数字为X,则庄家首先把卡片上的数字向所有玩家展示,然后按顺时针从庄家位置数第X个人将被处决即退出游戏。然后卡片将会被放回卡牌堆里并重新洗牌。被处决的人按顺时针的下一个人...原创 2017-11-09 17:45:11 · 499 阅读 · 0 评论 -
Codevs 1243 网络提速
DP+SPFA处理后效性原创 2017-10-14 20:29:47 · 448 阅读 · 0 评论 -
NOIP2016 换教室 期望DP
Problem嗯,NOIP历年真题什么的,到处都有,抓一道就是三四倍经验题,我就不写题目描述了23333 偷个懒一定不会被人发现的SolutionThoughts事实上,这是我第一次做概率与期望DP的题目,不是很懂套路,然后就想了很久很久,没什么太多的头绪。首先我觉得应该是用f[i][j]保存前i个时间段,申请换j次课,期望收获到的疲劳值。但是注意到这样的状态还是很复杂难...原创 2017-10-27 21:21:08 · 317 阅读 · 0 评论 -
DP专题考试总结(4)
DP专题考试总结(4)原创 2017-10-02 17:35:34 · 855 阅读 · 0 评论 -
DP专题考试总结(2)
DP专题考试总结(2)原创 2017-10-02 15:52:24 · 570 阅读 · 0 评论 -
HDU-4003 Find Metal Mineral 树形dp
树上分组背包原创 2017-08-26 22:15:00 · 299 阅读 · 0 评论 -
BZOJ 1076 SCOI2008奖励关 状压与期望DP
ProblemProblem Description你正在玩你最喜欢的电子游戏,并且刚刚进入一个奖励关。在这个奖励关里,系统将依次随机抛出k次宝物,每次你都可以选择吃或者不吃(必须在抛出下一个宝物之前做出选择,且现在决定不吃的宝物以后也不能再吃)。宝物一共有n种,系统每次抛出这n种宝物的概率都相同且相互独立。也就是说,即使前k-1次系统都抛出宝物1(这种情况是有可能出现的,尽管概率...原创 2017-11-03 14:37:01 · 384 阅读 · 0 评论 -
BZOJ 3675 APIO2014序列分割 斜率优化dp
ProblemDescription你正在玩一个关于长度为n的非负整数序列的游戏。这个游戏中你需要把序列分成k+1个非空的块。为了得到k+1块,你需要重复下面的操作k次:选择一个有超过一个元素的块(初始时你只有一块,即整个序列) 选择两个相邻元素把这个块从中间分开,得到两个非空的块。每次操作后你将获得那两个新产生的块的元素和的乘积的分数。你想要最大化最后的总得分。In...原创 2018-01-19 19:44:21 · 340 阅读 · 0 评论 -
BZOJ 2525 POI2011 DYN-Dynamite
ProblemBZOJ权限题,放洛谷链接。Solution参考了PoPoQQQ大爷的题解OAO考虑二分答案,则只需判断对于给定覆盖范围,判断选m个点能否覆盖所有的点即可。 对于以一个节点为根的子树,有三种状态: 0.这棵子树中存在一个选择的点,这个选择的点的贡献还能继续向上传递 1.这棵子树中存在一个未被覆盖的关键点,需要一些选择的点去覆盖他 2.这棵...原创 2018-04-09 21:20:13 · 341 阅读 · 0 评论