
-----DP-----
文章平均质量分 58
Sdywolf
沃是一只蒟蒻
展开
-
BZOJ4300--DP
Description 给定一个长度为n的数列ai,求ai的子序列bi的最长长度,满足bi&bi-1!=0(2<=i<=len)。水题一道,只要两个数有某一位上都为11,那么这两个数就能相邻,所以,我们只需要知道以某一位上为11的数结尾的序列的最长长度就可以。 代码如下:#include<cstdio>#include<cstring>#include<algorithm>#define原创 2017-05-04 20:10:32 · 425 阅读 · 0 评论 -
51nod 1503 猪和回文【DP】
Description一只猪走进了一个森林。很凑巧的是,这个森林的形状是长方形的,有n行,m列组成。我们把这个长方形的行从上到下标记为1到n,列从左到右标记为1到m。处于第r行第c列的格子用(r,c)表示。刚开始的时候猪站在(1,1),他的目标是走到(n,m)。由于猪回家心切,他在(r,c)的时候,只会往(r+1,c)或(r,c+1)走。他不能走出这个森林。这只猪所在的森林是一个非同寻常的森林。有一原创 2017-10-31 07:44:43 · 422 阅读 · 0 评论 -
51nod 1781 Pinball【DP】【线段树】
DescriptionPinball的游戏界面由m+2行、n列组成。第一行在顶端。一个球会从第一行的某一列出发,开始垂直下落,界面上有一些漏斗,一共有m个漏斗分别放在第2~m+1行,第i个漏斗的作用是把经过第i+1行且列数在Ai~Bi之间的球,将其移到下一行的第Ci列。 使用第i个漏斗需要支付Di的价钱,你需要保留一些漏斗使得球无论从第一行的哪一列开始放,都只可能到达第m+2行的唯一 一列,求花费的原创 2017-11-08 20:49:49 · 385 阅读 · 0 评论 -
51nod 1779 逆序对统计【状压DP】
Descriptionlyk最近计划按顺序做n道题目,每道题目都分为很多分数档次,lyk觉得这些题太简单了,于是它想到了一个好玩的游戏。lyk决定将每道题目做出其中的某个分数,使得这n道题目的逆序对个数最多。为了方便,假设共有m个分数档次,并且会给m个分数档次分配一个题目编号,表示该题目会出现这个分数档次。题目保证每道题都存在至少一个分数档次。(例如样例中5道题目的分数分别是5,6,3,4,7,共有原创 2017-11-01 15:50:36 · 504 阅读 · 0 评论 -
51nod 1486 大大走格子【组合数学】【DP】
Description有一个h行w列的棋盘,里面有一些格子是不能走的,现在要求从左上角走到右下角的方案数。题解考虑一个n∗mn*m的矩阵,从左上角走到右下角的方案数为Cn−1n+m−2C_{n+m-2}^{n-1}。发现直接求答案很难,运用补集思想,只要求出经过了障碍的方案书就可以了,定义f[i]f[i]表示排序后从左上角走到第i个障碍,如果从左上角走到i的路上没有其他的障碍的话,显然可以直接求,如原创 2017-10-24 19:54:47 · 669 阅读 · 0 评论 -
HDU 3853 LOOPS【期望DP】
DescriptionAkemi Homura is a Mahou Shoujo (Puella Magi/Magical Girl).Homura wants to help her friend Madoka save the world. But because of the plot of the Boss Incubator, she is trapped in a labyrinth原创 2017-11-10 20:02:04 · 397 阅读 · 0 评论 -
51nod 1500 苹果曼和树【树形DP】
Description苹果曼有一棵n个点的树。有一些(至少一个)结点被标记为黑色,有一些结点被标记为白色。现在考虑一个包含k(0 ≤ k < n)条树边的集合。如果苹果曼删除这些边,那么会将这个树分成(k+1)个部分。每个部分还是一棵树。现在苹果曼想知道有多少种边的集合,可以使得删除之后每一个部分恰好包含一个黑色结点。答案对1000000007 取余即可。题解定义f[i][0/1]f[i][0/1]原创 2017-10-26 16:05:46 · 505 阅读 · 0 评论 -
51nod 1398 等公交【概率DP】
Description小镇的公交车站里有N辆公交,标号为0,1,2,…,N-1。这个小镇的公交运作模式比较奇葩,当必须有一辆车离开车站时,系统会随机从N辆车中选择一辆车,其中任意一辆车i被选中的概率为prob[i]/100,当车i被选中后它会离开车站,并且在之后的time[i]的时间内完成它的行程并返回车站。然后系统又开始随机选N辆车之一(存在同一辆车被连续多次选中的可能)。这个车站在0时刻发出第一原创 2017-11-04 17:47:26 · 382 阅读 · 0 评论 -
【数位DP】树状数组
题解考虑如何计算f[l][r]f[l][r]f[l][r]。很显然,可以分别计算l,rl,rl,r的二进制中1的个数,然后减去(最大公共前缀的1的个数)*2。考虑如何统计每一对l,rl,rl,r的最大前缀中1的个数,可以用数位DP。记f[i][j][1/0][1/0]f[i][j][1/0][1/0]f[i][j][1/0][1/0]表示前iii位,最大公共前缀中1的个数为jjj,...原创 2018-06-05 15:40:03 · 312 阅读 · 0 评论 -
【ZROI】【DP】【17 提高 3】建造
假设我们已经确定了一个建造的顺序,那么如何计算按照这个顺序建造的方案数?这就相当于确定一个数组d,其中∑di&lt;=X∑di&lt;=X\sum d_idi&gt;=max{hi,hi+1}di&gt;=max{hi,hi+1}d_i>=max\{h_i,h_{i+1}\},为了方便起见,记∑max{hi,hi+1}=S∑max{hi,hi+1}=S\sum max\{h_i,h_{i+1}\}...原创 2018-07-08 20:40:02 · 329 阅读 · 0 评论 -
【ZROI】【启发式合并】【17 提高 2】Last mile of the way
做法就是每次将一个点的所有子节点的答案合并到这个点上去,暴力的合并可以每次枚举子节点背包的大小,这样的复杂度是O(ns2)O(ns2)O(ns^2)的。可以利用启发式合并的trick,每次将子节点中最重的儿子直接复制过来,然后对于其他子树中的所有节点直接暴力合并,由于合并单个节点的复杂度是O(s)O(s)O(s)的,而每次合并了以后子树大小至少变成了原来的2倍,所以每个节点最多被合并log2nlo...原创 2018-07-08 20:38:33 · 346 阅读 · 0 评论 -
【ZROI】【贪心】【DP】【17 提高 4】怪物猎人
假设我们已经确定了要杀那几只怪,假设第i只怪在第j天被杀死,那么它对猎人造成的伤害就是(a[i]+j∗d)(b[i]+j∗d)=a[i]∗b[i]+j2d2+j∗d∗(a[i]+b[i])(a[i]+j∗d)(b[i]+j∗d)=a[i]∗b[i]+j2d2+j∗d∗(a[i]+b[i])(a[i]+j*d)(b[i]+j*d)=a[i]*b[i]+j^2d^2+j*d*(a[i]+b[i]),贪...原创 2018-07-08 20:41:01 · 410 阅读 · 0 评论 -
【ZROI】【DP】【17 提高 5】石头剪刀布
暴力DP可以定义f[i][a][b][c]f[i][a][b][c]f[i][a][b][c]表示到第i个数为止,以0结尾的最长胜利序列长度为a,以1结尾的最长胜利序列长度为b,以2结尾的最长胜利序列长度为c的方案数,显然这样过于暴力了。接下来,我们会发现一个结论,那就是a,b,c任意两个数相差不超过2,证明如下:由于石头的上一个必然是布,所以c&gt;=a−1c&gt;=a−1c>=a-1,...原创 2018-07-08 20:41:24 · 487 阅读 · 0 评论 -
51nod 1052[最大子段和]【DP】
DescriptionN个整数组成的序列a[1],a[2],a[3],…,a[n],将这N个数划分为互不相交的M个子段,并且这M个子段的和是最大的。如果M >= N个数中正数的个数,那么输出所有正数的和。例如:-2 11 -4 13 -5 6 -2,分为2段,11 -4 13一段,6一段,和为26。题解首先,题目的意思有点绕,这里的答案其实是可以选1..m1..m个子段的最优解。那么,我们定义f[i原创 2017-08-29 21:43:28 · 319 阅读 · 0 评论 -
51nod 1274 最长递增路径【DP】
Description一个无向图,可能有自环,有重边,每条边有一个边权。你可以从任何点出发,任何点结束,可以经过同一个点任意次。但是不能经过同一条边2次,并且你走过的路必须满足所有边的权值严格单调递增,求最长能经过多少条边。以此图为例,最长的路径是:3 -> 1 -> 2 -> 3 -> 2 或3 -> 1 -> 2 -> 3 -> 4 长度为4。题解由于要求严格递增,所以直接按照边权排序刷DP就可原创 2017-10-21 23:31:42 · 343 阅读 · 0 评论 -
BZOJ--1087[轮廓线DP 状压][SCOI2005]
Description 在N×N的棋盘里面放K个国王,使他们互不攻击,共有多少种摆放方案。国王能攻击到它上下左右,以及左上 左下右上右下八个方向上附近的各一个格子,共8个格子。什么是轮廓线DP?轮廓线DP就是对于每一个状态,需要记录它的轮廓线上的信息才能完成状态的转移,那么记录它轮廓线上的信息有什么好处呢?有时,用轮廓线来定义状态,特别是对于要比用整行或是整列来定义状态要好得多,本题就是这样一道原创 2017-05-14 20:08:39 · 348 阅读 · 0 评论 -
斜率优化DP模板题--HDU3507 Print Article
题目大意:给出一串正数,将这一串数分成若干段,每一段的代价为这一段数的加和的平方+一个常数m,求最小代价。不难写出DP转移方程:f[i]=max(f[j]+(sum[i]−sum[j])2+m)f[i]=max(f[j]+(sum[i]-sum[j])^2+m)但是,这样复杂度是N2N^2的,对于N≤500,000N\le500,000显然是不行的,对于这种转移方程与i,j都有关的,可以用斜率优化来原创 2017-06-02 20:36:55 · 429 阅读 · 0 评论 -
USACO月赛2017.02 铂金组T2--NOCROSS
DescriptionFarmer John is continuing to ponder the issue of cows crossing the road through his farm,introduced in the preceding problem. He realizes that interaction between some pairs of breeds is act原创 2017-07-11 09:03:07 · 509 阅读 · 0 评论 -
DP--斜率优化--BZOJ1096--仓库建设
Description L公司有N个工厂,由高到底分布在一座山上。如图所示,工厂1在山顶,工厂N在山脚。由于这座山处于高原内陆地区(干燥少雨),L公司一般把产品直接堆放在露天,以节省费用。突然有一天,L公司的总裁L先生接到气象部门的电话,被告知三天之后将有一场暴雨,于是L先生决定紧急在某些工厂建立一些仓库以免产品被淋坏。由于地形的不同,在不同工厂建立仓库的费用可能是不同的。第i个工厂目前已有成品P原创 2017-06-09 09:11:42 · 450 阅读 · 0 评论 -
DP--多重背包--队列优化
问题描述:给出背包大小,给出一些物品,每个物品有一个重量、价值、个数,求能装进背包的最大总价值。 我们知道,这样的问题有很多种解法,比如可以用二进制拆分来使每个物品的个数变成原来的log,但是,这样显然还不够,下面我们来讨论利用队列来将多重背包优化到O(n*allv)的复杂度。我们知道,背包问题的转移方程为f[i][j]=max(f[i−1][j],f[i−1][j−w[i]]+p[i])f[i]原创 2017-06-12 21:39:06 · 407 阅读 · 0 评论 -
BZOJ 1009--[HNOI2008]GT考试【KMP算法】【矩阵优化线性递推】
Description 阿申准备报名参加GT考试,准考证号为N位数X1X2….Xn(0<=Xi<=9),他不希望准考证号上出现不吉利的数字。他的不吉利数学A1A2…Am(0<=Ai<=9)有M位,不出现是指X1X2…Xn中没有恰好一段等于A1A2…Am. A1和X1可以为0。N<=10^9,M<=20,K<=1000题解初看题目,感觉是组合数学的题目,但是并不可以。那就换一条思路。注意到M很小,想原创 2017-07-08 13:52:49 · 392 阅读 · 0 评论 -
BZOJ 1010: [HNOI2008]玩具装箱toy【斜率优化】
Description P教授要去看奥运,但是他舍不下他的玩具,于是他决定把所有的玩具运到北京。他使用自己的压缩器进行压 缩,其可以将任意物品变成一堆,再放到一种特殊的一维容器中。P教授有编号为1…N的N件玩具,第i件玩具经过 压缩后变成一维长度为Ci.为了方便整理,P教授要求在一个一维容器中的玩具编号是连续的。同时如果一个一维容 器中有多个玩具,那么两件玩具之间要加入一个单位长度的填充物,形原创 2017-08-06 19:30:12 · 351 阅读 · 0 评论 -
BZOJ 1597: [Usaco2008 Mar]土地购买【斜率优化】
Description农夫John准备扩大他的农场,他正在考虑N (1 <= N <= 50,000) 块长方形的土地. 每块土地的长宽满足(1 <= 宽 <= 1,000,000; 1 <= 长 <= 1,000,000). 每块土地的价格是它的面积,但FJ可以同时购买多快土地. 这些土地的价格是它们最大的长乘以它们最大的宽, 但是土地的长宽不能交换. 如果FJ买一块3x5的地和一块5x3的地,则原创 2017-08-06 19:43:45 · 483 阅读 · 0 评论 -
HDU6146 Pokémon GO【DP】
题解DP。首先定义几个东西,s[i]s[i]表示一个2∗i2*i的矩阵,从右上角遍历,最终回到右下角的方案数,显然s[i]=2i−1s[i]=2^{i-1},g[i]g[i]表示一个2∗i2*i的矩阵,从右上角遍历,最终不能回到右下角的方案数,易得g[i]=(g[i−1]+s[i−1])∗2+(g[i−2]+s[i−2])∗4)g[i]=(g[i-1]+s[i-1])*2+(g[i-2]+s[i-2原创 2017-08-23 20:27:10 · 316 阅读 · 0 评论 -
51nod 1020 逆序排列【DP】
Description在一个排列中,如果一对数的前后位置与大小顺序相反,即前面的数大于后面的数,那么它们就称为一个逆序。一个排列中逆序的总数就称为这个排列的逆序数。 如2 4 3 1中,2 1,4 3,4 1,3 1是逆序,逆序数是4。1-n的全排列中,逆序数最小为0(正序),最大为n*(n-1) / 2(倒序) 给出2个数n和k,求1-n的全排列中,逆序数为k的排列有多少种? 例如:n =原创 2017-09-10 16:50:27 · 478 阅读 · 0 评论 -
# NOIP2014 飞翔的小鸟 【DP】
DescriptionFlappy Bird 是一款风靡一时的休闲手机游戏。玩家需要不断控制点击手机屏幕的频率来调节小鸟的飞行高度,让小鸟顺利通过画面右方的管道缝隙。如果小鸟一不小心撞到了水管或者掉在地上的话,便宣告失败。为了简化问题,我们对游戏规则进行了简化和改编:游戏界面是一个长为 nn,高为 mm 的二维平面,其中有 kk 个管道(忽略管道的宽度)。小鸟始终在游戏界面内移动。小鸟从游戏界面原创 2017-10-27 16:35:10 · 677 阅读 · 0 评论 -
51nod 1354 选数字【DP】
Description当给定一个序列a[0],a[1],a[2],…,a[n-1] 和一个整数K时,我们想找出,有多少子序列满足这么一个条件:把当前子序列里面的所有元素乘起来恰好等于K。对于第一个数据,我们可以选择[3]或者[1(第一个1), 3]或者[1(第二个1), 3]或者[1,1,3]。所以答案是4。题解可以发现,m的因数个数很少,所以可以定义f[i][j]f[i][j]表示前ii个数,乘起原创 2017-10-28 21:19:29 · 329 阅读 · 0 评论 -
【UOJ】UER#3.B 开学前的日历
将条件转化为i,j⩾0,i+j⩾k|Av+i,u+j+=(i+ji)i,j⩾0,i+j⩾k|Av+i,u+j+=(i+ji)i,j\geqslant 0,i+j\geqslant k|A_{v+i,u+j}+={i+j\choose i}, 考虑组合意义,从(v,u)(v,u)(v,u)开始每次往右或往下走,走大于等于kkk布的方案数,直接DP。#include<cstdio>...原创 2018-08-13 20:48:54 · 359 阅读 · 0 评论