DP
Master.Yi
学习他人,提升自己;
提升自己,帮助他人。
展开
-
20200713 T1 集合划分(JOISCD1T1)【多项式优化DP】
题目描述长度为 2n2n2n 的 {Ai},{Bi}\{A_i\},\{B_i\}{Ai},{Bi} 序列,现在要选出一个新序列 {Ci}\{C_i\}{Ci},其中 Ci=AiC_i=A_iCi=Ai 或 Ci=BiC_i=B_iCi=Bi要求 Ci≤Ci+1C_i\le C_{i+1}Ci≤Ci+1,且选择的 AAA 的个数恰为 nnn 个,问方案数,方案不同当且仅当某个位置的选择不同。n≤5∗104,mod 998244353n\le 5*10^4,\mod 99824435原创 2020-07-22 16:40:37 · 286 阅读 · 0 评论 -
20200721 T3 s3mple【DP,点值优化卷积】
题目描述n≤200,x≤109n\le200,x\le 10^9n≤200,x≤109题目分析容易想到枚举最大值的位置,然后递归两边,于是有这样的DP:上面式子里面有个地方要改成 f(n−1−i,m−min(i,n−1−i)−1−j)f(n-1-i,m-min(i,n-1-i)-1-j)f(n−1−i,m−min(i,n−1−i)−1−j)可以DP求出区间长度为 nnn 的 xxx 的最大值:mx[n]=min(n+12,n+1−n+12)mx[n]=min(\frac {n+1}2,n+1原创 2020-07-21 20:05:23 · 262 阅读 · 0 评论 -
20200708 DP难题训练(神仙题
CF1363F Rotating Substrings旋转相当于可以把 sss 中的一个字符提前。editorial 1 最长公共子序列,很好理解。editorial 2 神奇的延迟DP,两种转移相互配合,最后两个要完全匹配,说明中间的匹配过程是合法的,f[i][j]f[i][j]f[i][j] 的定义为 s[1,i]s[1,i]s[1,i] + 若干后面提到前面来的字符 与 t[1,j]t[1,j]t[1,j] 匹配时已经确定的贡献(提前的贡献放在两个转移中的任意一个都可以)Code:#inc原创 2020-07-09 10:11:35 · 236 阅读 · 0 评论 -
模拟赛20200331【贪心+精度忽略,竞赛图,DP】
T1:小C饮水记题目描述:wi≤105,n≤106w_i\le10^5,n\le10^6wi≤105,n≤106题解:Code:#include<bits/stdc++.h>#define maxn 1000005#define S 40using namespace std;char cb[1<<20],*cs,*ct;#define get...原创 2020-03-31 16:56:59 · 230 阅读 · 0 评论 -
模拟赛20200312【区间gcd(DP),棋盘博弈模型,树拓扑序逆序对总数】
T1:题解:因为限制了区间gcd相等,直接DP的话需要知道当前区间以及它的gcd:Code(现在的人写线段树懒标记都不下传的吗。。。):#include<bits/stdc++.h>#define maxn 50005#define fi first#define se secondusing namespace std;const int mod = 99...原创 2020-03-12 18:00:23 · 247 阅读 · 0 评论 -
20200309 DP笔记【杂题,笛卡尔树】
杂题:AGC 034 ECF 908 G分开计算每个数字的贡献,即∑d=19d∗val(d)\sum_{d=1}^9d*val(d)∑d=19d∗val(d),其中val(d)val(d)val(d)是∑10i\sum10^i∑10i的形式,直接数位DP需要知道大于和等于ddd的个数,复杂度较高。改为求∑d=19∑i=d9val(i)\sum_{d=1}^9\sum_{i=...原创 2020-03-10 23:34:54 · 351 阅读 · 0 评论 -
HDU2844 Coins【多重背包新姿势】
题目描述:n种硬币,面值AiA_iAi,个数CiC_iCi,求可以凑出[1,m][1,m][1,m]中多少个数。n≤100,m≤100000,Ai≤100000,Ci≤1000n\le100,m\le100000,A_i\le100000,C_i\le1000n≤100,m≤100000,Ai≤100000,Ci≤1000题目分析:题面显然是要求一个多重背包。方法一:二进制优化...原创 2020-03-04 16:06:19 · 139 阅读 · 0 评论 -
模拟赛20200224【直径期望(积分),本质不同子序列(矩阵乘法优化),强连通分量序列(贪心DP)】
T1:Expectation给出nnn个点的树,树的边权是[0,1][0,1][0,1]中随机的一个实数,求直径的期望长度。n≤100n\le100n≤100题解:T2:Sequence一个长度为nnn的包含大小写字母的字符串,QQQ次询问区间本质不同的子序列个数,强制在线。n,Q≤106n,Q\le10^6n,Q≤106题解:一般求本质不同的子序列数是设f[i]f[i]f[i]...原创 2020-02-28 08:28:17 · 661 阅读 · 0 评论 -
模拟赛Day1(20200203) T1 垃圾题【分类讨论+枚举+dp解决等价匹配问题】
题目描述:题目分析:看到bbb的长度为5,可以感觉到这题就是在锻炼强大合理的分类讨论能力。首先看bi≤2b_i\le2bi≤2的部分分,即只有两种数字。枚举这两种数为x,yx,yx,y,数量分别为cntx,cntycnt_x,cnt_ycntx,cnty,可以记状态f[i][5]f[i][5]f[i][5],在O((cntx+cnty)∗5)O((cnt_x+cnt_y)*5)O...原创 2020-02-03 22:16:01 · 157 阅读 · 0 评论 -
BZOJ4770: 图样 (随机点值求异或最小生成树边权和)
题目描述:n≤50,m≤8n\le50,m\le8n≤50,m≤8题目分析:根据最小生成树有小到大加入边可以将点按照二进制最高位分组,统计所有情况的边权和。Code:#include<bits/stdc++.h>#define maxn 55#define maxm 9using namespace std;const int mod = 258280327;i...原创 2020-01-05 19:59:31 · 333 阅读 · 0 评论 -
【COCI11-12 #5】堆放矩形块
题目描述:题目分析:管它上面是什么东西,反正只需要关心它的重心和最右边的距离。设f[i]f[i]f[i]表示块[i,n][i,n][i,n]的重心与右边界的最远距离。考虑[i+1,n][i+1,n][i+1,n]叠到第iii块上来,要么是上面的最右边作为新的最右边,上面的重心在第iii块的右边界时,新重心离右边最远;要么是第iii块的最右边作为新的最右边,上面的重心在第iii块的左边界时...原创 2019-11-12 15:29:32 · 205 阅读 · 0 评论 -
Codeforces480E Parking Lot【动态(增量)网格最大正方形】
题目描述:题目分析:求的是最大值,我们的答案却在递减,不好做,考虑倒着做,先把所有的障碍加好,再一个一个删除障碍,这样答案就变成递增的了。记当前答案为ans,那么当删除一个障碍之后就只需要考虑包含这个点的正方形对答案的贡献。这里我们要用到悬线法,记录每个点向左和向右最多能延伸的长度L和R。每删除一个障碍只会影响到这一行的悬线,所以可以暴力维护。得到悬线之后考虑怎么检测是否新增了边长为a...原创 2019-10-26 16:21:43 · 257 阅读 · 0 评论 -
BZOJ1181 IZBROI选举【二分+DP】
题目描述:共有V张票,每一票只可能投给N个政党中的一个。共有M个席位。设编号为i的政党最终的得票为Vi,则议会中的席位按如下规则分配:1、将得票数小于总选票的5%的政党剔除。2、初始时议会为空,每个政党都只有0个席位。3、对于每个政党P,计算一个参数Qp = Vp / (Sp + 1),Vp为政党P的最终得票,Sp为政党P当前已经在议会拥有的席位。4、给Qp最大的政党分配一个席位,如果有...原创 2019-10-16 16:11:52 · 259 阅读 · 0 评论 -
BZOJ2616: SPOJ PERIODNI【笛卡尔树树形DP】
题目描述:N≤500,K≤500,h[i] ≤1000000,mod 109+7。题目分析:根据图形比较容易想到按照最小值划分区间,那么hminh_{min}hmin*n这一个矩形区域就由这个最小值控制,两边的比hminh_{min}hmin高的车显然不会互相影响,据此就可以想到一个根据最小值划分然后DP的做法。划分的过程就是笛卡尔树的形态,所以问题就变成了在笛卡尔树上DP,f[i]...原创 2019-10-15 22:31:24 · 393 阅读 · 0 评论 -
【DP】 摆花
摆花(flower.cpp)时间限制: 1 Sec 内存限制: 128 MB提交: 18 解决: 8[提交][状态][讨论版]题目描述小明的花店新开张,为了吸引顾客,他想在花店的门口摆上一排花,共m盆。通过调查顾客的喜好,小明列出了顾客最喜欢的n种花,从1到n标号。为了在门口展出更多种花,规定第i种花不能超过ai盆,摆花时同一种花放在一起,且不同种类的花需按标号的从原创 2016-11-01 13:43:32 · 1024 阅读 · 0 评论 -
BZOJ4559: [JLoi2016]成绩比较【DP+插值】
题目描述:G系共有n位同学,M门必修课。这N位同学的编号为0到N-1的整数,其中B神的编号为0号。这M门必修课编号为0到M-1的整数。一位同学在必修课上可以获得的分数是1到Ui中的一个整数。如果在每门课上A获得的成绩均小于等于B获得的成绩,则称A被B碾压。在B神的说法中,G系共有K位同学被他碾压(不包括他自己),而其他N-K-1位同学则没有被他碾压。D神查到了B神每门必修课的排名。这里的排名...原创 2019-09-26 22:42:08 · 154 阅读 · 0 评论 -
BZOJ2794 Cloakroom【有限制的背包问题】
题目描述:有n件物品,每件物品有三个属性a[i], b[i], c[i] (a[i]<b[i])。再给出q个询问,每个询问由非负整数m, k, s组成,问是否能够选出某些物品使得:对于每个选的物品i,满足a[i]<=m且b[i]>m+s。所有选出物品的c[i]的和正好是k。n<=1000,c[i]<=1000, 1<=a[i]<b[i]<...原创 2019-10-04 09:15:41 · 295 阅读 · 0 评论 -
BZOJ4985: 评分【二分+DP】
题目描述:有N个评委参加了这次评分,N是奇数。这次采用了一种创新的方法计算最后得分,计算规则是:最初N位评委排成一排,检查队伍排头的3位评委的评分,去掉一个最高分和一个最低分,剩下的一个评委移动到队伍最后,反复执行以上操作,直到队伍中的评委只剩一位,那么这个评委的打分就是Lj的最后得分。由于有的评委年纪比较大了,不记得自己的位置了,现在有M(1 ≦ M ≦ N - 2)个评委很快找到了自己的...原创 2019-10-05 08:44:12 · 234 阅读 · 0 评论 -
BZOJ1899: [Zjoi2004]Lunch 午餐【贪心DP】
题目描述:两个窗口,每个人有打饭时间aia_iai和吃饭时间bib_ibi,安排队伍顺序,使得从0时刻到最后一个吃完的总用时最少。n<=200,ai,bi<=200n<=200,a_i,b_i<=200n<=200,ai,bi<=200题目分析:显然需要一个排序,于是大家非常愉快地就让吃饭时间长的人在前面了。然而我太菜了,不能一眼看出这个结论,...原创 2019-10-05 09:04:50 · 157 阅读 · 0 评论 -
BZOJ4664: Count【分段DP】
题目描述:有n本高度不同的书排成一排,混乱度为相邻高度之差的绝对值之和,求混乱度<=L的排列方案数。n<=100,h[i]<=1000题目分析显然很难表示当前放的书的状态以及计算每放一本书时的对混乱度的贡献。按照常规想法我们会想到从小到大放书,这看似没有什么用。但是大佬想到了整合贡献,分步处理的方法。题解链接把已经放的书看成一些段,这些段有些是已经确定为边界的,有些是...原创 2019-10-05 09:23:54 · 271 阅读 · 0 评论 -
BZOJ4033: [HAOI2015]树上染色【DP】
题目描述:有一棵点数为N的树,树边有边权。给你一个在0~N之内的正整数K,你要在这棵树中选择K个点,将其染成黑色,并将其他的N-K个点染成白色。将所有点染色后,你会获得黑点两两之间的距离加上白点两两之间距离的和的收益。问收益最大值是多少。题目分析:由于无法确定每个黑点的具体深度,所以我们将贡献分在每条边上统计。f[u][i]f[u][i]f[u][i]表示uuu子树内选iii个黑点时子树...原创 2019-10-05 09:30:18 · 105 阅读 · 0 评论 -
BZOJ1190: [HNOI2007]梦幻岛宝珠【分层背包】
题目描述:给你N颗宝石,每颗宝石都有重量和价值。要你从这些宝石中选取一些宝石,保证总重量不超过W,且总价值最大为,并输出最大的总价值。N<=100;W<=230,并且保证每颗宝石的重量符合a*2b(a<=10;b<=30)题目分析:比较完整的题解点这里按照bbb对物品分层,设f[i][j]f[i][j]f[i][j]表示可用容量为j∗2ij*2^ij∗2i时已经装...原创 2019-10-05 09:51:11 · 171 阅读 · 0 评论 -
BZOJ1758: [Wc2010]重建计划【二分/迭代,长链剖分+线段树】
题目描述:n个点的树,选出k条道路,要求k在[L,U]之间,且道路的平均权值最大。(k不定)n<=100000, 边权<=106题目分析:平均值最大比较常见的思路是二分,每条边减去mid后求最大值看是否大于等于0。用f[u][i]f[u][i]f[u][i]表示以uuu为根长度为iii的链的最大权值(加上了从uuu到根的权值,方便计算)我们需要在添加儿子vvv的时候对于vv...原创 2019-10-06 09:41:26 · 171 阅读 · 0 评论 -
BZOJ2213: [Poi2011]Difference【"动态" DP】
题目描述:已知一个长度为n的由小写字母组成的字符串,求一个子串,出现最多的字母出现的个数减去该段中出现过的出现次数最少的字母出现的个数最大。求这个个数。题目分析:法一:枚举是哪两种字母相减,设为a,b,那么就只需要把a,b从原串中拿出来,a的值+1,b的值-1,求最大子段和,虽然a,b并不一定是真实串中最多最少的字母,但是这样做的最大值一定是答案。每个位置最多拿出来52次,复杂度是O(...原创 2019-09-14 21:39:44 · 150 阅读 · 0 评论 -
CodeForces 107 D.Crime Management【状态编码+矩阵快速幂】
添加链接描述#include<bits/stdc++.h>#define maxn 135#define LL long longusing namespace std;const int mod = 12345, Seed = 137;LL n;int m,p[maxn],id[28],a[28],cnt,tot,ans;bool vis[maxn];char c;...原创 2019-08-24 12:17:02 · 211 阅读 · 0 评论 -
JeremyGuo的NOIP(+)模拟赛
T1 水池n,m,L≤1000n,m,L\le1000n,m,L≤1000题目分析考虑积水从最低的高度慢慢往上涨,什么时候会流出去,记vis[i][j]=1表示(i,j)已经流出去了。从小到大枚举高度H,枚举高度=H的点(用vector实现),在点四周的高度<=H的块相当于连通了。如果四周有一个已经流出去的块,意味着这整个连通块(除了已经流出去的部分)在积水高度超过H的时候就会流出...原创 2019-07-27 19:14:20 · 280 阅读 · 0 评论 -
CQBZ 2444 帮忙
帮忙题目描述【题目背景】在高考研讨会上,随着 z 同学对 zn 了解的深入,发现她不仅是一个善良的女孩子,还 是一个很勤劳的女生,哇塞,这样棒的女生在 21世纪真是太难遇到了,要是可以娶到这样的 女生,小 z 陷入了无限的 yy 中高考研讨会进入了尾声,校长一声令下,搬椅子喽~~~~,只见平时道貌岸然的那些所谓的好学生们一听要干活全跑了,shit~~!!操场上只剩 zn 与 z ...原创 2018-11-07 08:43:35 · 306 阅读 · 0 评论 -
CQBZ2444 帮忙
帮忙题目描述【题目背景】在高考研讨会上,随着 z 同学对 zn 了解的深入,发现她不仅是一个善良的女孩子,还 是一个很勤劳的女生,哇塞,这样棒的女生在 21世纪真是太难遇到了,要是可以娶到这样的 女生,小 z 陷入了无限的 yy 中高考研讨会进入了尾声,校长一声令下,搬椅子喽~~~~,只见平时道貌岸然的那些所谓的好学生们一听要干活全跑了,shit~~!!操场上只剩 zn 与 z 同学...原创 2018-11-06 22:35:47 · 440 阅读 · 0 评论 -
【DP优化】 铁塔分组
铁塔(tower)【题目描述】Rainbow 和 Freda 要在 Poetic Island 市的一座山脚下盖房子定居了……盖房子需要钢材,幸运的是,这里有排成一行的n座废弃的铁塔,从左到右编号为1~n,其中第 i 座的高度为h [ i ]。Rainbow 和 Freda 想盖一座上面小下面大的城堡,并且城堡的层数尽可能多。因此,他们要把这些铁塔分成尽量多组,每组内的铁塔编号必须是连续...原创 2018-09-26 22:18:50 · 543 阅读 · 0 评论 -
【重庆市NOIP模拟赛】数据
数据 时间限制: 1 Sec 内存限制: 128 MB 提交: 58 解决: 31 [提交][状态][我的提交] 题目描述 Mr_H 出了一道信息学竞赛题,就是给 n 个数排序。输入格式是这样的: 试题有若干组数据。每组数据的第一个是一个整数 n,表示总共有 n 个数待排序;接下来 n 个整数,分别表示这 n 个待排序的数。 例如:3 4 2 –1 4 1 2 3 4,就表示有两组原创 2017-07-24 17:37:37 · 1039 阅读 · 0 评论 -
【(类似DP)优化】 分梨子
分梨子时间限制: 1 Sec 内存限制: 64 MB提交: 32 解决: 14[提交][状态][我的提交]题目描述 Finley家的院子里有棵梨树,最近收获了许多梨子。于是,Finley决定挑出一些梨子,分给幼稚园的宝宝们。可是梨子大小味道都不太一样,一定要尽量挑选那些差不多的梨子分给孩子们,那些分到小梨子的宝宝才不会哭闹。 每个梨子都具有两个属性值,Ai和B原创 2017-07-22 14:07:31 · 1304 阅读 · 0 评论 -
【DP】 noi openjudge 2.6 山区建小学
7624:山区建小学总时间限制: 1000ms 内存限制: 65536kB描述政府在某山区修建了一条道路,恰好穿越总共m个村庄的每个村庄一次,没有回路或交叉,任意两个村庄只能通过这条路来往。已知任意两个相邻的村庄之间的距离为di(为正整数),其中,0 输入第1行为m和n,其间用空格间隔第2行为(m-1) 个整数,依次表示从一端到另原创 2016-10-02 23:06:02 · 1112 阅读 · 0 评论 -
【DP】 花店橱窗布置
花店橱窗布置(flower.cpp)时间限制: 1 Sec 内存限制: 64 MB题目描述假设你想以最美观的方式布置花店的橱窗。你有F束花,每束花的品种都不一样,同时,你至少有同样数量的花瓶,被按顺序摆成一行。花瓶的位置是固定的,并从左至右,从1至V顺序编号,V是花瓶的数目,编号为1的花瓶在最左边,编号为V的花瓶在最右边。花束则可以移动,并且每束花用1至F的整数唯一标识。标识原创 2016-11-05 23:06:03 · 1654 阅读 · 2 评论 -
【DP】 noi openjudge 2.6 乘积最大
8782:乘积最大总时间限制: 1000ms 内存限制: 65536kB描述今年是国际数学联盟确定的“2000——世界数学年”,又恰逢我国著名数学家华罗庚先生诞辰90周年。在华罗庚先生的家乡江苏金坛,组织了一场别开生面的数学智力竞赛的活动,你的一个好朋友XZ也有幸得以参加。活动中,主持人给所有参加活动的选手出了这样一道题目:设有一个长度为N的数字原创 2016-09-27 13:59:29 · 865 阅读 · 0 评论 -
【DP】 noi openjudge 2.6 滑雪
90:滑雪总时间限制: 1000ms 内存限制: 65536kB描述Michael喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激。可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你。Michael想知道载一个区域中最长的滑坡。区域由一个二维数组给出。数组的每个数字代表点的高度。下面是一个例子 1 2 3 4原创 2016-08-16 13:29:24 · 1203 阅读 · 0 评论 -
【DP背包问题1】 noi openjudge 2.6 采药
题目:1775:采药总时间限制: 1000ms 内存限制: 65536kB描述辰辰是个很有潜能、天资聪颖的孩子,他的梦想是称为世界上最伟大的医师。为此,他想拜附近最有威望的医师为师。医师为了判断他的资质,给他出了一个难题。医师把他带到个到处都是草药的山洞里对他说:“孩子,这个山洞里有一些不同的草药,采每一株都需要一些时间,每一株也有它自身的价原创 2016-08-15 15:43:42 · 528 阅读 · 0 评论 -
HDU 3507 Print Article【斜率优化dp】
题目描述:把长度为n的序列{ci}划分成若干个区间,每个区间的贡献为ci的和的平方加上M,求最小贡献n<=500000题目分析:斜率优化模板题,题解网上很多。。这里主要说一下细节while(head+1<tail&&gety(q[tail-1],q[tail-2])*getx(i,q[tail-1])>gety(i,q[tail-1])*getx(q[t...原创 2019-01-03 15:56:42 · 150 阅读 · 0 评论 -
HDU 3480 Division 【斜率优化/WQS二分】
题目描述题目链接n个数分成m堆,每堆的贡献是(最大值-最小值)^2,求最小贡献,n&amp;lt;=10000,m&amp;lt;=1000题目分析先从小到大排序,然后妥妥的O(nm)斜率优化dp但是我(蒟蒻)不小心想到了WQS二分,然后满怀激动地觉得可以做到O(nlogm)于是:怎么会WA??!!想一想,选的堆数越多,答案肯定越小,按道理讲函数图像应该是个下凸包,只需要二分出每选一堆会加上的...原创 2019-01-04 15:14:24 · 325 阅读 · 0 评论 -
51nod 1843 排列合并机【DP去重】Ender的模拟赛
题目描述有两个1~n的排列A,B,序列C一开始为空,每次可以选择进行以下两种操作之一1)若A不为空,则可取出A的开头元素放在序列C的末尾2)若B不为空,则可取出B的开头元素放在序列C的末尾这样当A,B皆为空时,C称为排列A,B的合并,其长度为2*n记F(A,B)为A,B的所有可能合并的总数,两个合并数列不同当且仅当某一位不同求对于所有可能的1~n的排列A,B,F(A,B)的和,mod ...原创 2019-07-26 22:39:04 · 238 阅读 · 0 评论 -
BZOJ 2999 inint【数DP优化】(Ender的模拟赛)
题目描述从起点1开始,每次选择当前数的任意一位上加上去,问得到n的最小步数以及方案数。多组数据。例如,从1开始得到100,有很多方法,其中有下面两种方式:A. 1-2-4-8-16-17-18-19-20-22-24-28-36-39-48-56-62-68-76-83-91-100B. 1-2-4-8-16-17-24-28-36-39-48-56-62-68-76-83-91-100...原创 2019-07-26 21:42:12 · 181 阅读 · 0 评论