_____DP_____
文章平均质量分 91
zxyoi_dreamer
退役了退役了爬了爬了,搞个锤子算法竞赛,不如好好享受大学生活。
展开
-
【校内模拟】Kingdom(DP)
由于太过SB,懒得写简要题意了。。。题解:不难发现我们可以直接考虑 iii 能不能直接走到 jjj 然后 O(n2)O(n^2)O(n2) DP即可。最开始把题目看错成距离直线距离不超过 ddd 了,我Splay维护动态凸包都写完了艹。。线段的话也是非常简单,考虑一个不在圆 iii 内部的点,它显然会限制 iii 向后连出去的点的极角范围。于是维护这个范围即可,然而我的维护方式过于SB...原创 2020-04-20 15:22:05 · 243 阅读 · 0 评论 -
【校内模拟】数值修改(贪心)(DP)
简要题意:给一个十进制数,每次可以选择它的一个数码,然后它的值减去你选择的这个数码。重复这个操作,直到这个数变成0,问最少需要多少次操作。x≤1e18x\leq 1e18x≤1e18脑子卡住是什么感觉。就是发现了正解要用的性质,不知道为什么就是没有继续往下细想。啊艹为什么题解:首先容易注意到答案是单调不减的。要证明这一点可以归纳,考虑 iii 和 i+1i+1i+1 假设之前的...原创 2020-04-14 15:19:07 · 199 阅读 · 0 评论 -
【JOISC 2020】【LOJ3276】【UOJ506】遗迹(组合数学DP)
题解:如果知道原序列,我们可以倒序直接求出每个柱子的最终高度。若一个柱子最终高度为 xxx ,则我们称 xxx 被占据了。具体做法就是从 2n2n2n 枚举到 111,如果之前处理后还有大于 111 小于等于 aia_iai 的位置没有被占据,显然该柱子会停留在最大的位置并占据它,否则最终会变为 111。这样我们可以横向顺次考虑这个问题,而不是每次都考虑整体,这也是我们 DP 的基础。...原创 2020-04-02 16:50:36 · 468 阅读 · 0 评论 -
【JOI 2020 Final】【LOJ3254】集邮比赛(DP)
传送门题解:设 f[l][r][k][0/1]f[l][r][k][0/1]f[l][r][k][0/1] 表示已经经过了 1−l.r−n1-l.r-n1−l.r−n 的所有点,拿到了 kkk 枚邮票,当前停留在 l/rl/rl/r 的最少时间,转移 O(1)O(1)O(1) 即可,可以按长度滚动数组,不过 JOI 不卡常数。代码(一丁点常数优化都没有的那种):#include<...原创 2020-03-21 19:36:50 · 425 阅读 · 0 评论 -
【校内模拟】长寿花(组合数学DP)
简要题意:有 nnn 层架子,第iii层上有aia_iai个位置,一共有mmm种可用颜色,你需要给所有位置染色并满足下列限制:同层相邻位置不染同色相邻两层的所用颜色集合,在去重之后不相等。问你有多少种方案。模数任意。题解:其实这道题让人考场上不太想做的唯一原因就是模数任意。设coef[i][j]coef[i][j]coef[i][j]表示用jjj个颜色给iii个位置染色,且颜...原创 2019-11-06 21:57:25 · 154 阅读 · 0 评论 -
【SDOI2019】移动金币(阶梯NIM)(DP)
传送门题解:很容易注意到这是一个阶梯NIM,先手必胜当且仅当所有奇数位置上的石头数量的xor和不为000。按照套路,考虑拆位,由于异或和不为000不太好算,考虑算异或和为000,即奇数位置上每一位的数量都是偶数。首先可以O(m2)O(m^2)O(m2)处理出在某一位上一共放了jjj个111,且奇数位置上的总数为偶数的方案数。然后考虑两种DP,考虑前iii位,当前总和为jjj的方案数,转...原创 2019-10-25 14:58:34 · 300 阅读 · 0 评论 -
【SDOI2019】染色(DP)
传送门题解:首先我们可以设置DP状态为fi,x,yf_{i,x,y}fi,x,y表示当前DP到第iii列,两个格子的颜色分别为x,yx,yx,y的方案数。显然我们需要优化。考虑想办法快速跳过中间两个位置都空的格子。考虑枚举起始列和终止列的状态,然后考虑中间的空格子的方案数,注意我们这里是在假设两边都已经确定了的情况下进行计数。本质不同的情况有5种(其中不同字母表示的颜色不同):(...原创 2019-10-24 20:47:49 · 638 阅读 · 0 评论 -
【LOJ577】「LibreOJ NOI Round #2」简单算术(Lucas定理)(DP)
传送门题解:其实这道题还挺简单的。。。首先考虑如何表示mmm次幂的kkk次项,显然是若干项的乘积之和。考虑枚举拆分方案,设iii次项出现了bib_ibi次,则∑i=0nibi=k,∑i=0nbi=m\sum\limits_{i=0}^nib_i=k,\sum\limits_{i=0}^nb_i=mi=0∑nibi=k,i=0∑nbi=m,并且这个拆分对应的排列数量为∏i=0n(...原创 2019-10-14 10:23:55 · 647 阅读 · 1 评论 -
【校内模拟】Quests(组合数学)(反向计数)
传送门,肯定是没有的。题解:可以很显然地发现,只有当包含当前位置的询问集合不同的时候,我们能够区分这些位置。定义一个不可识别子串[l,r][l,r][l,r]为其左右位置无法区分的子串。定义一个极长不可识别子串[l,r][l,r][l,r]为一个不可识别子串,且不存在任何l′≤l,r′≥rl'\leq l ,r'\geq rl′≤l,r′≥r,[l′,...原创 2019-07-30 21:24:01 · 254 阅读 · 0 评论 -
【CF814E】 An unavoidable detour for home(组合数学)(DP)
传送门题解:由题目给出的两个限制:1.从1到所有点的最短路唯一2.1到iii的距离不小于1到i+1i+1i+1的距离我们可以很显然地发现图可以这样生成:BFS树就是最短路树,且每个点向深度浅的边的连线只有一条同层的点的编号连续,且非树边只可能是同层的点之间的连边。设f[i][j]f[i][j]f[i][j]表示考虑前iii个点的时候,最后jjj个点和iii点在同一层时候的...原创 2019-07-14 16:05:09 · 299 阅读 · 0 评论 -
【BZOJ4498】魔法的碰撞(DP)(组合数学)
传送门题解:首先将did_idi全部−1-1−1,方便下面叙述。首先我们假设某个排列ppp中,魔法师之间站得尽可能紧之后中间空的格子个数为x=∑i=1n−1max(dpi,dpi+1)x=\sum\limits_{i=1}^{n-1}\max(d_{p_i},d_{p_{i+1}})x=i=1∑n−1max(dpi,dpi+1)(显然这时候格子是最少的),那么按照这个顺序的来...原创 2019-07-13 17:04:42 · 327 阅读 · 0 评论 -
【ZJOI2019】【LOJ3042】【洛谷P5279】麻将(DP)(自动机)
洛谷传送门LOJ传送门解析:首先明确一点,我们要求的是这个东西:∑ii×P(胡牌最小寻目数等于i)\sum_{i}i\times P(胡牌最小寻目数等于i)i∑i×P(胡牌最小寻目数等于i)其实稍微动一下脑子可以发现要求的其实是∑iP(胡牌的最小寻目数大于i)\sum_{i}P(胡牌的最小寻目数大于i)i∑P(胡牌的最小寻目数大于i)我们计算拿所有张数的牌时候无法胡牌的情况就行了...原创 2019-04-10 15:05:23 · 312 阅读 · 1 评论 -
【清华集训2017】【LOJ2326】【洛谷P4224】简单数据结构(线筛处理因数表)(DP)(set维护)
LOJ传送门洛谷传送门解析:其实题目中说了这么多,有一句话同一个数字最多只会被插入C次。C=10也就是说,我们可以将这个序列近似看作随机。那么直接考虑乱搞。我们发现还有一个条件:保证在任意时刻序列A非空,其中的元素互不相等直接告诉我们可以为每个数记录出现位置,并且答案大小直接降低到了logloglog级别。记dp[i]dp[i]dp[i]表示以iii开头的数列最长长度,...原创 2019-04-04 19:13:44 · 267 阅读 · 0 评论 -
2019.04.04【CodeForces1110】D. Jongmah(DP)
传送门解析;我们发现三个相同的顺子和三个连着的三条没有任何本质区别。所以我们规定同类型的顺子个数不能超过两个。用cntcntcnt记录所有牌型的个数,从小向大的方向转移,发现会影响当前状态的只有前两个位置的用牌张数,直接暴力枚举转移就行了。代码:#include<bits/stdc++.h>#define ll long long#define re registe...原创 2019-04-04 08:52:22 · 225 阅读 · 0 评论 -
2019.03.06【BJOI2018】【洛谷P4459】双人猜数游戏(DP)
传送门解析:直接用f[i][j][t]f[i][j][t]f[i][j][t]表示i,ji,ji,j在第ttt轮能否被确定。DP转移后贪心选择最小的答案就行了。代码:#include<bits/stdc++.h>using namespace std;#define ll long long#define re register#define cs constc...原创 2019-03-06 20:57:01 · 654 阅读 · 1 评论 -
2019.03.08【JSOI2018】【洛谷P4558】【BZOJ5318】扫地机器人(哈密顿路径)(裴蜀定理)(DP)
洛谷传送门BZOJ传送门解析:首先我们给每个格子一个决策方向,向下或向右。可以很轻易的发现,如果想要合法,所有循环对角线的格子必须要决策相同,不然的话会有格子无法被达到。于是我们发现在所有对角线的决策相同的时候,机器人的路径是一个循环,且循环节长度为gcd(n,m)\gcd(n,m)gcd(n,m),而且合法的循环节长度只能为gcd(n,m)\gcd(n,m)gcd(n,m),由裴蜀...原创 2019-03-09 10:04:43 · 268 阅读 · 0 评论 -
【ZJOI2017】【UOJ292】【LOJ2252】【洛谷P3689】多项式(暴力)(数学推导)
UOJ传送门LOJ传送门洛谷传送门垃圾BZOJ不知道是不是放错数据了,居然连标算都A不了题解:这道题最扯的地方在于,除了IO优化,没有任何板子可以拿上来。也就是说,这是一道纯思维难度加代码难度的题。与你板子熟不熟练没有任何关系。然而推出结论后,正解相当暴力。设mx=max(n,k)mx=\max(n,k)mx=max(n,k),则我们维护所有2mx2^{mx}2mx个不同的长为...原创 2019-07-26 21:50:56 · 298 阅读 · 0 评论 -
【TC SRM 498 DIV1 Hard】【TC 11223】FoxJumping(容斥)(DP)
传送门题解:设f[i][x][y]f[i][x][y]f[i][x][y]表示用iii个任意向量走到(x,y)(x,y)(x,y)的方案数,g[i][k]g[i][k]g[i][k]表示用iii个非法向量走到k∗10,k∗10k*10,k*10k∗10,k∗10的方案数。DP发现,f[i][x][y]f[i][x][y]f[i][x][y]中xxx和yyy的两维没有关系,分开DP,前缀和优...原创 2019-08-05 21:48:34 · 244 阅读 · 0 评论 -
2018.08.30【BZOJ3036】绿豆蛙的归宿 (概率/期望DP)(记忆化搜索)
传送门解析:解析以后再说,现在先刷题。。。代码:#include&amp;amp;amp;lt;bits/stdc++.h&amp;amp;amp;gt;using namespace std;#define ll long long#define re register#define gc getchar#define pc putchar#define cs const#define st原创 2018-08-30 17:18:07 · 180 阅读 · 0 评论 -
【CF98E】Help Shrek and Donkey(纳什均衡)(DP)
传送门好久没有玩过博弈论了。。。脑子一抽少算了贡献懵逼半天。众所周知,博弈论有一个大前提就是“参与游戏的人足够聪明”,所以如果你不懂博弈论那套理论的话基本上博弈论的题就直接宣告再见吧。题解:首先我们清楚的知道双方的策略必然包含随机因素,因为这是一个非完全信息博弈,同时由于这是一个零和博弈,双方的策略都希望能够最小化对方获胜的概率。那么模型就很清楚了,混合策略纳什均衡。以下用nnn表示...原创 2019-10-08 12:43:30 · 376 阅读 · 0 评论 -
【CF613E】Puzzle Lover(哈希)(DP)
传送门CF今天好像挂了in queue了评测都有5页。下面的代码通过了校内OJ的测试,应该没什么问题,好像数据就是从CF上扒下来的来着题解:考虑合法的路径一定满足左边一个UUU,右边一个UUU,中间是蛇形。枚举左边合法的UUU和中间的每个格子进行转移,f[0/1][i][j]f[0/1][i][j]f[0/1][i][j]表示当前在(0/1,i)(0/1,i)(0/1,i)这个格子,匹...原创 2019-10-02 23:20:47 · 258 阅读 · 0 评论 -
【CF480E】Parking Lot(DP)(单调性)
传送门题解:为什么我会在某人的数据结构讲义里面看到这道题。。。首先我们可以DP求出最大子正方形,设f[i][j]f[i][j]f[i][j]表示以i,ji,ji,j为右下角的最大正方形边长,则对于合法格子的转移就是f[i][j]=min{f[i][j−1],f[i−1][j],f[i−1][j−1]}+1f[i][j]=\min\{f[i][j-1],f[i-1][j],f[i-1][j...原创 2019-09-26 20:12:56 · 193 阅读 · 0 评论 -
【校内模拟】lcm(DP)
对不起,我以为这是一个数学题题解:考虑到lcmlcmlcm实际上就是各个素数的最大次幂乘起来。200200200以内最大次幂能够超过111的素数只有2,3,5,7,11,132,3,5,7,11,132,3,5,7,11,13六个,总状态数8∗5∗4∗3∗3∗3=43208*5*4*3*3*3=43208∗5∗4∗3∗3∗3=4320对于超过13的质数,显然每个数最多只有一个这样的质数,我...原创 2019-09-23 10:20:07 · 186 阅读 · 0 评论 -
【洛谷P3028】[USACO13MAR]项链Necklace(KMP)(DP)
传送门题解:建立KMP自动机。设f[i][j]f[i][j]f[i][j]表示考虑了第一个串的前iii个位置,匹配到jjj,且没有完全匹配过第二个串,前iii个位置中最多能够保留多少个,转移直接利用KMP自动机xjb写就行了。第一维顺便滚动数组优化一下。代码:#include<bits/stdc++.h>#define ll long long#define re r...原创 2019-09-20 21:31:31 · 144 阅读 · 0 评论 -
【校内模拟】assignment(DP)
题面见校内OJ4693题解:考虑预处理f[k][i][j]f[k][i][j]f[k][i][j]表示最长的一段不超过kkk的时候,将长度为iii的序列分为jjj段的方案数。在kkk相同的状态之间转移,显然有f[i][j]=f[i−1][j]+f[i−1][j−1]−f[i−k−1][j−1]f[i][j]=f[i-1][j]+f[i-1][j-1]-f[i-k-1][j-1]f[i][j...原创 2019-09-07 23:20:52 · 100 阅读 · 0 评论 -
【GXOI/GZOI2019】宝牌一大堆(麻将DP)(贪心)
传送门其实还有第三种麻将——四川麻将,规则和其他麻将都不太像,甚至在四川不同地区的规则也不一样。而关于麻将胡牌的题,能够利用DP解决的,我们可以将这种技巧成为麻将DP题解:这篇题解里面用的是川麻的语言习惯。首先注意到杠子是废的,我们永远不可能考虑用一个杠子代替一个刻子,因为它权值永远小于刻子。(没注意到没关系,反正写到DP里面杠子的转移就一行)国士无双可以直接枚举重复的那个是什么O(...原创 2019-09-06 09:58:18 · 375 阅读 · 0 评论 -
【HDU4624】Endless Spin(min-max容斥)(DP)
传送门题解:这道题从某种意义上体现了OI题目中对期望取模的优越性。据我所知,ACM的概率、期望题目,答案是不允许取模的。其实就是一个SBmin-max容斥,发现算期望只和实际的集合大小奇偶性和包含集合中位置的区间个数有关,DP算出来即可。这份代码并不能过,我拿了表来看,刚好卡在第15位精度上面。请使用奇技淫巧。代码:#include<bits/stdc++.h>#i...原创 2019-09-05 15:31:29 · 301 阅读 · 0 评论 -
【BZOJ2655】calc(DP)(拉格朗日插值)
传送门题解:钦定大小关系,算出来后乘上阶乘就是答案。显然有DP:f(A,n)=Af(A−1,n−1)+f(A−1,n)f(A,n)=Af(A-1,n-1)+f(A-1,n)f(A,n)=Af(A−1,n−1)+f(A−1,n)求前缀和会将次数+1,每次n+1的时候会乘上一个A,次数会+1,f(A,n)f(A,n)f(A,n)是一个关于AAA的2n2n2n次多项式。暴力计算前面的项,然后...原创 2019-08-30 10:43:24 · 150 阅读 · 0 评论 -
2019.02.26【九省联考2018】【BZOJ5252】【洛谷P4383】林克卡特树(DP凸优化)
BZOJ传送门洛谷传送门解析:首先让我们好好分析一下题目。连上kkk条边权为000的边。我们发现这个操作并不会产生任何贡献???于是问题就是最大化树上不超过k+1k+1k+1条不相交的链的边权和。如果定义单点是退化的链,那就是恰好k+1k+1k+1条。接下来的讨论都是建立在这个定义上的。这个问题相信敢来写九省联考题的人都会用树形DP解决。于是你可以拿到60pts60pts60p...原创 2019-02-26 19:37:28 · 217 阅读 · 0 评论 -
2019.02.22【TJOI2018】【BZOJ5337】【洛谷P4591】碱基序列 str(SAM)(滚动数组DP)
BZOJ传送门洛谷传送门解析:这道题。。。怎么说呢。。。真是水出了新高度,但是需要熟练掌握SAM。首先对原串建出SAM。显然,匹配到一个位置后的endpos集合就是所有匹配位置,endpos集合的大小就是匹配次数。所以我们只需要计算匹配到每个位置的方案数就行了。枚举当前集合的所有串,枚举所有已经匹配上一个集合的状态,在原状态上进行后续转移。注意失配的情况直接放弃。由于只会用到匹...原创 2019-02-22 13:22:11 · 279 阅读 · 0 评论 -
2018.09.02【清华集训】榕树之心 (树形DP)
传送门解析:读完题应该都猜得到是树形DPDPDP。。。那么怎么DP?考虑每一个子树,显然我们应该尽量少把榕树的心往子树拉,所以当心在子树中时,我们可以通过子树叶子的生长来相互抵消,也就是说,要记录每个子树的sizsizsiz。令w[i]w[i]w[i]表示以iii为根节点的子树最少把心往该子树拉的距离。令iii最大子树为maxn[i]maxn[i]maxn[i],次大子...原创 2018-09-02 15:31:05 · 247 阅读 · 0 评论 -
2018.09.07【POJ2018】Best Cow Fences (二分答案)(线性DP)
传送门解析:待更新代码:#include&lt;cstdio&gt;#include&lt;cctype&gt;#include&lt;algorithm&gt;#include&lt;cmath&gt;using namespace std;#define ll long long#define re reg原创 2018-09-07 19:50:50 · 369 阅读 · 0 评论 -
2018.09.01 【BZOJ1426】收集邮票(期望DP)
传送门解析:呵呵。。。代码:#include&amp;amp;lt;bits/stdc++.h&amp;amp;gt;using namespace std;#define ll long long#define re register#define cs const#define st static#define pc putchar#define gc getcharinl原创 2018-09-01 12:58:38 · 200 阅读 · 0 评论 -
2018.08.30【SCOI2017】D2T1 花园 (期望DP)
题目描述小 A 的花园的长和宽分别是 L,H 。小 A 喜欢在花园里做游戏。每次做游戏的时候,他都先把花园均匀分割成 L×H 个小方块,每个方块的长和宽都是 1 。然后,小 A 会从花园的西北角的小方块出发,按照一定的规则移动,在到达花园东南角的小方块时结束游戏。每次行动时,他都会移动到当前所在的小方块的东面或南面相邻的小方块上。如果小 A 当前在从北向南数第 i 块,从西向东数第 j 块小方...原创 2018-08-30 23:24:15 · 232 阅读 · 0 评论 -
2018.08.30【找不到来源】游戏 (概率DP?不,期望DP!)
题目描述Alice 和 Bob 两个人正在玩一个游戏,游戏有很多种任务,难度为 p 的任务(p是正整数),有 1/(2^p) 的概率完成并得到 2^(p-1) 分,如果完成不了,得 0 分。一开始每人都是 0 分,从 Alice 开始轮流做任务,她可以选择任意一个任务来做;而 Bob 只会做难度为 1 的任务。只要其中有一个人达到 n 分,即算作那个人胜利。求 Alice 采取最优策略的情况下...原创 2018-08-30 21:37:53 · 145 阅读 · 0 评论 -
2018.09.10【BZOJ2442】修剪草坪(单调队列优化DP)
传送门解析:首先状态转移还是比较好想的。 令fi,0/1fi,0/1f_{i,0/1}表示考虑前iii个时,选择第iii个与不选第iii个能够获得的最大效益。 我们维护一个sumsumsum数组表示前缀和。那么,状态转移方程也就呼之欲出了 fi,0=max(fi−1,0,fi−1,1)fi,0=max(fi−1,0,fi−1,1)f_{i,0}=max(f_{i-1,0}...原创 2018-09-10 20:37:02 · 293 阅读 · 0 评论 -
2018.09.10【洛谷1886】滑动窗口(单调队列优化DP)
传送门解析:显然又是DPDPDP。考虑单调队列优化。 对于最大值,队列里面保存当前位置前kkk个中的递减序列,每次查队首,改队尾就行了。 最小值类似处理。代码:#include<bits/stdc++.h>using namespace std;#define ll long long#define re register#define gc...原创 2018-09-10 21:05:44 · 243 阅读 · 0 评论 -
2019.01.28【51nod1376】最长递增子序列的数量(树状数组)(DP)
传送门解析:首先我们还是从最基础的O(n2)O(n^2)O(n2)的DP讲起O(n2)O(n^2)O(n2)显然我们只需要处理出前iii个位置中,以每个位置结尾的最长上升子序列长度以及以这个位置结尾的最长上升子序列的个数,然后就可以做到O(n)O(n)O(n)枚举所有iii之前的位置进行状态更新就行了。然而我们发现能够对当前状态进行更新的状态jjj只有a[j]a[j]a[j]比当前的a...原创 2019-01-28 21:00:38 · 277 阅读 · 0 评论 -
2018.11.08【CodeForces989】E. A Trance of Nightfall(矩阵快速幂)(倍增)
传送门解析:考场上本来想写倍增来着结果发现这个东西可以矩阵快速幂转移,所以倍增数组就用来优化矩阵快速幂了。。。(省去每次求出转移矩阵的一点常数)如果只有一次询问,我们只需要求出每个点在跑了mmm次后以及每条线在跑了mmm次后到达目标点的距离。这个显然只需要把每个点走m−1m-1m−1次的概率DPDPDP出来计算直线最大,因为直线需要走一步到点上面,然后把每个点走mmm次的概率求出来,所有点...原创 2018-11-08 15:20:03 · 254 阅读 · 1 评论 -
2018.11.07【NOIP2017】【洛谷P3953】逛公园(DP)(魔改最短路计数)
传送门解析:首先这鬼畜的最短路肯定你是要自己跑一遍的。但是我是在反图上面跑。。因为我的DP策略表示在当前点uuu剩余冤枉路可以走restrestrest走到终点的方案数,所以我需要的是每个点到终点的最短路,起点…不重要。然后就直接这样子记忆化搜索一下就行了。代码:#include<bits/stdc++.h>using namespace std;#define ...原创 2018-11-07 23:16:03 · 149 阅读 · 0 评论