
DP
Ceyo
这个作者很懒,什么都没留下…
展开
-
【NOIP2009PJ】道路游戏
啊哈,现在有重温了一遍o(╥﹏╥)o从以前的O(n2)——>现在的O(n3),感觉自己废了~(尽管代码大幅度减少)我们可以发现p其实只是一个限制的作用,不需要枚举啊,它是一个个走的,所以只需要记录一下就行了┭┮﹏┭┮uses math;var f,g:array[0..1001,0..1001,0..1] of longint; a:array[1....原创 2018-12-30 16:45:38 · 603 阅读 · 0 评论 -
bzoj 3156.防御准备
真的,这数据是个很厉害 (贱) 的人出的DP题,n2不过斜率过。那就加个斜率优化吧。DP式:f[i]=min{f[j]+(i-j)*(i-j-1)/2+a[i]};我们依旧设k<j<i,且j比k更优f[j]+(i-j) * (i-j-1)/2+a[i]<f[k]+(i-k) * (i-k-1)/2+a[i]化简后,变为:f[j]+j * (j+1)/2-f[k]-k...原创 2019-02-01 22:06:23 · 221 阅读 · 0 评论 -
[Usaco2008 Mar]土地购买
题外话:丫的手贱不小心删了,只好重打。。。如果优快云能回复回收站的东东那该有多好啊此题依旧是斜率优化。感觉自己做斜率优化做疯了(滑稽)还是与先前一样弄出DP式:f[i]=min{f[j]+y[j+1]*x[i]}这里要着重说明一下:这里的x[],y[]都已经是排过序并整理了的!!!我们先按照x为第一关键字,y为第二关键字来从小到大(both)排序。随后,我们发现它的y[]不满足...原创 2019-02-01 22:20:57 · 208 阅读 · 0 评论 -
【五校联考3day2】B
这题DP即可。我们先求出rank[i]表示“a[k]=i”中的k。设f[i][j]表示第i位放j的最大价值和。我们可以分情况讨论:(对于a[i])1:第a[i-1]位的字母小于第a[i]位的字母,直接取max即可。2:第a[i-1]位的字母等于第a[i]位的字母,且第a[i]+1位的大于第a[i-1]+1位的,取max。最后输出max(f[n][i])即可。上标:#include...原创 2019-01-28 15:41:49 · 199 阅读 · 0 评论 -
bzoj.3675 [Apio2014]序列分割
这题依旧是斜率优化DP。首先我们可以发现,它的分割顺序对答案没有影响:假设我们要将一块分为三部分,每部分的和分别为a,b,ca * (b+c)+b * c=a * b+a * c+b * c(a+b) * c+a * b=a * c+b * c+a * b所以,我们可以按顺序分了。DP式:f[i]=max{f[j]+a[j] * (a[i]-a[j])}这里的a[i]表示原a[]的...原创 2019-02-02 22:18:47 · 200 阅读 · 0 评论 -
【五校联考3day2】C
这题DP,想明白了就可以了。这就像个坐标系一样(好像本来就是。。。)而在其上面,有很多个点。咳咳,有点丑。然后呢,我们就按照x坐标排个序,y也顺便排一下(第二关键字)这样子,在我们DP的时候,或者说对于i,我们可以满足a[i].x<=a[i+1…n].x所以,我们就可以不记录对于i点射向左边的了。而我们要记录的,是它射向右边的最上面的点(j),射向右边的最下面的点(k),...原创 2019-01-28 20:21:29 · 258 阅读 · 0 评论 -
【NOIP2014模拟11.1B组】蜀传之单刀赴会
这题就是个状压DP,我们设:f[i][j]表示当前在第i个朋友家,走到过的状态为j的最小时间。这是从1走到n的!!!再设g[i][j]表示当前在第i个朋友家,都到过的状态为j的最小时间。这是从n返回1的!!!做完f后就把f[k]赋值为g[k],然后在照做一遍就可以了。我们可以将第0个朋友表示为1,第k+1个朋友表示为n。上标:#include&lt;cstdio&gt;#incl...原创 2019-02-15 11:52:49 · 257 阅读 · 1 评论 -
【五校联考6day2】er
这题首先是:分类讨论首先,我们可以知道,最优解一定是先“1”再“2”后“3”!(为什么自己想)然后,我们可以发现,要是选的话,一定是从大选到小(为什么自己想)嗯嗯,n=1的情况是很简单的,然后我们考虑n=2的//o(*  ̄︶ ̄ * )o//n=2的我们可以DP!!!有两种做法:第一种:(简单又自然,就是有点慢)我们设f[j]表示当前(就是前i个)这个东西是否能够构成。这样子就是...原创 2019-01-29 21:38:22 · 169 阅读 · 0 评论 -
【NOIP2015模拟10.20】ACM
这题打了个斜率DP。有点骚。。。但为什么我的时间不是最快的!上标:#include&lt;cstdio&gt;#include&lt;algorithm&gt;#define N 150010#define db doubleusing namespace std;int n,a[N],b[N],c[N],f[N],ans=999999999;int g[N],len,l;i...原创 2019-01-31 11:36:22 · 235 阅读 · 0 评论 -
#10191. 「一本通 5.6 练习 4」打印文章
这题™是多组数据。。。还搞了半天。。。最后只好这样打才过了。。。while (scanf("%d%d",&n,&m)==2){}斜率DP,式子很容易推:f[i]=min{f[j]+(sum[i]-sum[j])2+a[i]2};其中sum[]表示a[]的前缀和上标:#include<cstdio>#include<algorithm>...原创 2019-02-12 19:38:40 · 406 阅读 · 0 评论 -
#10192. 「一本通 5.6 练习 5」锯木厂选址
这题斜率优化。详见标。上标:#include<cstdio>#define N 200010#define db double#define ll long longusing namespace std;int n,l=0,len=0,g[N];ll d[N],sw[N],sd[N],c[N],f[N],ans=(ll)(1<<30)*(1<<...原创 2019-02-12 22:06:27 · 213 阅读 · 0 评论 -
【NOIP2012模拟10.25】剪草
Description有N棵小草,编号0至N-1。奶牛Bessie不喜欢小草,所以Bessie要用剪刀剪草,目标是使得这N棵小草的高度总和不超过H。在第0时刻,第i棵小草的高度是h[i],接下来的每个整数时刻,会依次发生如下三个步骤:(1)每棵小草都长高了,第i棵小草长高的高度是grow[i]。(2)Bessie选择其中一棵小草并把它剪平,这棵小草高度变为0。注意:这棵小草并没有死掉,它下一...原创 2019-03-09 08:09:38 · 208 阅读 · 0 评论 -
jzoj 4779. 【GDOI2017模拟9.14】鞍点
question这题题目全是图,就不贴了(感觉好多题都是图。。。)Solution正解DP我们设f[i][j]表示放到第j个鞍点,其中的最大值为i的方案数。我们使放置的鞍点的大小严格不下降(这样计算较方便)而后,我们将f[i][j]推到下一个:f[i+1][j+k](0<=k<=n-j)这里的n<m转移方程很容易得到:f[i+1][j+k]+=f[i][j] *y...原创 2019-03-16 22:15:05 · 450 阅读 · 2 评论 -
jzoj 3169. 【GDOI2013模拟4】生产汽车
Description题目大意,就是有n个人,m辆车;从第一辆车开始做,做到第m辆车;每辆车要连续地从第一个工人做到第n个工人,第i个工人做第j辆车要a[i] * b[j]分钟。求生产完所有汽车最少需要多少时间。Input第一行输入两个整数:工人数N(1<=N<=100,000)和汽车数M(1<=M<=100,000)。接下来N行描述每一个工人的Ti(1<=T...原创 2019-04-15 14:53:19 · 266 阅读 · 0 评论 -
jzoj 3128. 【WinterCamp 2013】跳格子
f[i]=f[j]+v[i]+v[i-1]+sum[i-2]-sum[j](i-K<=j<i-1)原创 2019-04-22 21:07:23 · 166 阅读 · 0 评论 -
jzoj 4616. 【NOI2016模拟7.12】二进制的世界
QuestionSolution这题考场就打了个暴力。结果有人O(216∗n)O(2^{16}*n)O(216∗n)过了。。。正解是“折半”,O(28∗n)O(2^8*n)O(28∗n)我们设f[i][j]f[i][j]f[i][j]:有两个数x,yx,yx,y。x=a∗256+bx=a*256+bx=a∗256+by=c∗256+dy=c*256+dy=c∗256+d(此处的...原创 2019-07-03 20:06:24 · 295 阅读 · 0 评论 -
[Usaco2008 Mar]土地购买
此题依旧是斜率优化。感觉自己做斜率优化做疯了(滑稽)还是与先前一样弄出DP式:f[i]=min{f[j]+y[j+1]*x[i]}这里要着重说明一下:这里的x[],y[]都已经是排过序并整理了的!!!我们先按照x为第一关键字,y为第二关键字来从小到大(both)排序。随后,我们发现它的y[]不满足单调性。所以我们应当将其转换一下。这位大佬写得很详细:%d%a%l%a%o这样子,...原创 2019-03-16 10:08:18 · 193 阅读 · 0 评论 -
【USACO题库】3.3.2 Shopping Offers商店购物
这题我打的真的是千辛万苦啊!!!先打了个贪心,呵呵WA50。。。然后知道有一个五维DP的方法(真的是简单易懂)设f[i][j][k][l][v]表示第一个还剩i个第二个还剩j个第三个还剩k个第四个还剩l个第五个还剩v个看看吧,真多啊接着暴力转移n个(记得判一下能否转移)每次转移的时候都看看将它剩下的全部单价购买后的价钱能否影响ans#include&lt;cstdio&gt...原创 2019-01-17 14:15:46 · 537 阅读 · 0 评论 -
【USACO题库】3.4.4 Raucous Rockers“破锣摇滚”乐队
此题DP即可设f[i][j]表示已经装了i张CD,当前CD还剩下j分钟的最大歌曲数目#include<cstdio>#include<algorithm>using namespace std;int a[21],f[21][21],n,t,m;inline int read(){ int x=0; char c=getchar(); while (c&...原创 2019-01-16 20:44:46 · 267 阅读 · 0 评论 -
【NOIP2007提高组】矩阵取数游戏
本题DP+高精度即可。首先我们可以发现它的贡献只与行有关系,于是就分成n行,每行都做DP,然后将max加起来即可。(PS:用高精度实现)上标:#include&amp;lt;cstdio&amp;gt;#include&amp;lt;cstring&amp;gt;#include&amp;lt;algorithm&amp;gt;#define mo 100000#define ll l原创 2018-12-30 14:23:15 · 694 阅读 · 0 评论 -
【NOIP2013模拟11.5A组】cza的蛋糕(cake)
Description:cza特别喜欢吃海苔,怎么吃也吃不够。cza的生日到来时,他的父母给他买了许许多多的海苔和一个生日蛋糕。海苔是一个12或21的长方形,而蛋糕则是一个nm的矩阵。蛋糕上有一些蜡烛占据了位置,其他地方都可以放海苔。cza的父母让cza把海苔尽可能多的放在蛋糕上,但是海苔不能够重叠放置。cza想把海苔留着自己以后慢慢吃,可又不敢违背父母,于是他决定放一少部分在蛋糕上。为了不使...原创 2018-12-26 20:57:40 · 249 阅读 · 0 评论 -
【NOIP2018提高组D2T3】保卫王国
抱歉,本人蒟蒻没能做出,不过可给标程,orz大佬const maxn=100000;inf=trunc(1e+12)-1;varf : array[0..maxn,0..17,0..1,0..1]of int64;up,dw : array[0..maxn,0..1]of int64;fa : array[0..maxn,0..17]of longint;go,nxt : arr...原创 2018-12-15 16:44:41 · 365 阅读 · 0 评论 -
jzojs 100044. 【NOIP2017提高A组模拟7.13】abcd
哈哈,看这题挺少题解的,就发一份吧DescriptionInput输入文件名为abcd.in。输入文件共 N+1 行。第 1 行包含1个正整数N。第 i+1 行包含4个整数a[i],b[i],c[i],d[i]。Output输出文件名为abcd.out。输出共1行,包含1个整数,表示所给出公式的最大值。输入数据保证一定有解。Sample InputSampl...原创 2018-12-15 16:15:38 · 160 阅读 · 0 评论 -
【NOI2017模拟5.31】diyiti
Description给定n 根直的木棍,要从中选出6 根木棍,满足:能用这6 根木棍拼出一个正方形。注意木棍不能弯折。问方案数。正方形:四条边都相等、四个角都是直角的四边形。Input第一行一个整数n。第二行包含n 个整数ai,代表每根木棍的长度。84 5 1 5 1 9 4 5Output一行一个整数,代表方案数。3桶预处理+n^2实现分类讨论2 2 ...原创 2018-12-12 21:56:06 · 424 阅读 · 0 评论 -
【NOIP2016提高A组模拟9.7】千帆渡
本题DP,设f[i][j]表示a[]到i,b[]到j的最长长度。对于每个i和j:a[i]=b[j] --&amp;gt;f[i][j]=max(f[i-1][k])+1;a[i]!=b[j] --&amp;gt;f[i][j]=f[i-1][j]max哪里优化即可。上标:#include&amp;lt;cstdio&amp;gt;#include&amp;lt;algorithm&am原创 2019-01-05 13:02:17 · 173 阅读 · 0 评论 -
【NOIP2012模拟10.26】雕塑
这题打的状压DP,考场↙戳着哈哈哈。。。(┭┮﹏┭┮)改改成滚动,结果WA90。。。此处WA90呵呵,不过不管了,讲讲状压吧。设f[i][j]表示到第i行,在i-1行中占了的列数的状压进制。WA90代码:#include&amp;amp;lt;cstdio&amp;amp;gt;#include&amp;amp;lt;cstring&amp;amp;gt;#define ll long longusi原创 2019-01-05 13:15:41 · 229 阅读 · 2 评论 -
【NOIP2018PJ正式赛】摆渡车
DP设f[i][j]表示第i个人等了j分钟后开车的最小花费时间。#include&lt;cstdio&gt;#include&lt;cstring&gt;#include&lt;algorithm&gt;#define ll long longusing namespace std;int t[501],f[501][201],sum[501],n,m;inline int rea原创 2019-01-06 13:05:45 · 414 阅读 · 0 评论 -
【NOIP2010提高组】乌龟棋
这题一眼DP,本来是设五维的:f[i][j][k][l][o]表示到了第i格还剩下j个‘1’,k个‘2’,l个‘3’,o个‘4’但是,咳咳,空超了!!!如何?我们在仔细地看一看DP数组我们可以发现,i其实是不需要的!为什么?!因为,当我们确定了剩下的卡片,我们就能确定了它当前所在的位置是哪里。所以,我们可以直接将i去掉,perfect!那这样的话,我们只要设四维就可以了。f[j...原创 2019-01-17 14:25:05 · 297 阅读 · 0 评论 -
【HNOI2016模拟4.10】线性代数与逻辑
这题废了。。。首先,题意一定要明白。我们要构造一个y数组(一维,题目的)然后再构造出我们要的X矩阵。(满足Xi,j=yi^yj)由于题目要也就是对于每一个位置(i,j),要使X[i,j]|(!A[i,j])也就是说,如果A[i,j]=1,那么X[i,j]一定要等于1,否则随便然后,我们要让也就是说,y中0的个数和1的个数差最小。答案就是2y中0的个数y中1的个数(也就是n-...原创 2019-01-17 22:09:04 · 191 阅读 · 0 评论 -
【JSOI2016】最佳团队
这题,二分+树上背包即可。由于答案要最大(最值),所以我们可以二分。然后我们可以简化一下答案。那么每个点的贡献即为 p[i]-mid*s[i]。做树上背包,看一下f[0][K]是否大于0即可。上标:#include<cstdio>#include<cstring>#include<algorithm>#define db doubleusi...原创 2019-01-18 16:02:10 · 165 阅读 · 0 评论 -
【JSOI2016】病毒感染
题目大意:就是说你要一来一回地走,求最少死亡人数。设g[i][j]表示从i走到j再走会i的最少死亡人数设f[i]表示1~i村庄都治疗了的最少死亡人数#include<cstdio>#include<cstring>#include<algorithm>#define ll long longusing namespace std;ll n,a[...原创 2019-01-19 07:51:44 · 431 阅读 · 0 评论 -
jzoj 1274. 游历的路线(lines.pas/cpp)
这题DP,考场时把数组给开小了。。。设f[i][j]表示在第j天到了城市i的最小花费。输出f[n][m]即可。时间复杂度O(n2m)上标:#include<cstdio>#include<cstring>#include<algorithm>using namespace std;int n,m,a[110][110][21],x;int c...原创 2019-01-26 18:57:41 · 221 阅读 · 0 评论 -
【五校联考3day1】食物
这题01背包,表示不知为何一眼切。。。一维DP,每组数据两次DP。算了,讲清楚一点吧。我们对于每个u,v,d将其拆成1u,1v2u,2v4u,4v…d-(2k-1)u,d-(2k-1)v例如d=17我们便可以拆成:1u,1v2u,2v4u,4v8u,8v2u,2v(这个是剩下的)这样子就没错了。然后就来一遍01背包搞搞就可以了。详见看标:#include&l...原创 2019-01-26 19:03:07 · 291 阅读 · 0 评论 -
【NOIP2017模拟A组模拟8.5】队伍统计
这题状压DP,设f[i][j]表示当前状态为i,有j个是违反了的方案数。转移嘛,就是f[i | (1<<k-1)][j+s]+=f[i][j]s表示如果k放在这儿的话会有多少个违反的上标:#include<cstdio>#define ll long long#define mo 1000000007using namespace std;struct n...原创 2019-01-27 12:32:55 · 297 阅读 · 0 评论 -
jzoj 3316. 【BOI2013】非回文数字
Question当一个数字不包含长度大于1的子回文数字时称为非回文数字。求aaa~bbb之间的非回文数字。Solution比赛是想到数位DP,只需搞一搞回文数字部分为3位或2位的即可。然后想着怎么求回文数字个数kkk,然后用x−kx-kx−k。刚了1h,结果啥也没刚出来,想到容斥去了。最后交了个暴力17分走起。就是没想到DP非回文数字个数。设f[i][j][k]f[i][j][k]...原创 2019-07-04 16:38:57 · 290 阅读 · 0 评论