
DP
LZJ209
主页:https://zongjia.li/
展开
-
BZOJ 3675 斜率优化DP
题目描述就不说了,自己看BZOJ吧 这道题首先要想明白一个问题,就是一个序列先切和后切获得的得分是一样的,就像要把一个序列分为abcd四块,先ab|cd和先a|bcd获得的结果相同,所以这道题就可以写一个dp了,dp方程为 F[i][k]=F[j][k-1]+sum[j]*(sum[i]-sum[j]) 再看一眼数据,n=100000显然正常dp搞不了,所以就要写一个斜率优化,具体式子就不写了原创 2016-12-26 14:26:57 · 508 阅读 · 0 评论 -
3195: [Jxoi2012]奇怪的道路 状压DP
Description小宇从历史书上了解到一个古老的文明。这个文明在各个方面高度发达,交通方面也不例外。考古学家已经知道,这个文明在全盛时期有n座城市,编号为1..n。m条道路连接在这些城市之间,每条道路将两个城市连接起来,使得两地的居民可以方便地来往。一对城市之间可能存在多条道路。 据史料记载,这个文明的交通网络满足两个奇怪的特征。首先,这个文明崇拜数字K,所以对于任何一条道路,设它连接的两个城原创 2017-06-23 21:11:21 · 387 阅读 · 0 评论 -
BZOJ 1566: [NOI2009]管道取珠 另类DP
题目:戳这里 题解:比较神的想法,因为最后答案是所有数的平方,那么我们就可以将问题转化一下,变成俩个人取数,两人拿出的结果相同的方案书目,YY一下就能证明这个转化的正确性,这就很好办了,瞎DP一下就行了。#include<cstdio>#include<cstdlib>#include<ctime>#include<cmath>#include<cstring>#include<stri原创 2017-06-23 20:48:12 · 705 阅读 · 1 评论 -
BZOJ 1426: 收集邮票 期望DP
Description有n种不同的邮票,皮皮想收集所有种类的邮票。唯一的收集方法是到同学凡凡那里购买,每次只能买一张,并且买到的邮票究竟是n种邮票中的哪一种是等概率的,概率均为1/n。但是由于凡凡也很喜欢邮票,所以皮皮购买第k张邮票需要支付k元钱。 现在皮皮手中没有邮票,皮皮想知道自己得到所有种类的邮票需要花费的钱数目的期望。Input一行,一个数字N N<=10000Output要付出多少钱. 保原创 2017-06-23 20:34:55 · 383 阅读 · 0 评论 -
3672: [Noi2014]购票 树剖+线段树+斜率优化
Description今年夏天,NOI在SZ市迎来了她30周岁的生日。来自全国 n 个城市的OIer们都会从各地出发,到SZ市参加这次盛会。 全国的城市构成了一棵以SZ市为根的有根树,每个城市与它的父亲用道路连接。为了方便起见,我们将全国的 n 个城市用 1 到 n 的整数编号。其中SZ市的编号为 1。对于除SZ市之外的任意一个城市 v,我们给出了它在这棵树上的父亲城市 fv 以及原创 2017-05-30 11:33:22 · 516 阅读 · 0 评论 -
BZOJ 3209: 花神的数论题 数位DP
Description背景 众所周知,花神多年来凭借无边的神力狂虐各大 OJ、OI、CF、TC …… 当然也包括 CH 啦。 描述 话说花神这天又来讲课了。课后照例有超级难的神题啦…… 我等蒟蒻又遭殃了。 花神的题目是这样的 设 sum(i) 表示 i 的二进制表示中 1 的个数。给出一个正整数 N ,花神要问你 派(Sum(i)),也就是 sum(1)—sum(N) 的乘积。Input原创 2017-05-30 11:06:08 · 422 阅读 · 0 评论 -
BZOJ 2806: [Ctsc2012]Cheat 后缀自动机+单调队列优化DP
题意:算了不想写题意了233 题解:对所有串建一个广义后缀自动机,然后对于每个模板串算出到第i位最大能匹配多远,二分出一个答案,然后写出一个DP方程,F[i]表示到第i位最多能匹配多少位,f[i]=max(f[j] (i-maxx[i]<=j<=i-midans) +i-j) 显然单调队列乱搞一下就行了。#include<iostream>#include<iomanip>#include<c原创 2017-05-25 20:28:45 · 454 阅读 · 0 评论 -
BZOJ 2216: [Poi2011]Lightning Conductor 决策单调性DP
Description已知一个长度为n的序列a1,a2,…,an。 对于每个1<=i<=n,找到最小的非负整数p满足 对于任意的j, aj < = ai + p - sqrt(abs(i-j)) Input第一行n,(1<=n<=500000) 下面每行一个整数,其中第i行是ai。(0<=ai<=1000000000)Outputn行,第i行表示对于i,得到的pSample Input 6原创 2017-05-25 20:21:30 · 445 阅读 · 0 评论 -
BZOJ1270: [BeijingWc2008]雷涛的小猫 DP
题目大意:一只猫,可以在若干颗数之间瞎蹦,每次瞎蹦需要下降k的长度,到达一个点就获得该点的收益,问最大收益。 题解:SBDP,F1[i]表示高度为i的时候最大值是多少,F2[i]表示在第i棵树上时的最大权值为多少,随便写写就行了。#include<bits/stdc++.h>using namespace std;int mapp[5000][5000];int f1[5000];int原创 2017-05-25 19:58:23 · 304 阅读 · 0 评论 -
BZOJ 1563: [NOI2009]诗人小G 决策单调性DP
题目大意:给定若干个字符串,可以将相邻的若干个字符串连接起来并在其中插入空格,最小化每个字符串与给定长度的差的绝对值的p次方。 题解:一眼看上去像是之前做过的斜率优化,但是仔细一看不是平方变成了p次方,这就是斜率优化做不了的了,查了题解才知道这是决策单调性DP,决策单调性DP就是假如有如下方程:F[i]=max(f[j]+W(i,j))其中W(i,j)是有关i,j的式子,若能证明W(i+1,j)+原创 2017-05-25 19:53:23 · 548 阅读 · 0 评论 -
BZOJ 2734: [HNOI2012]集合选数 乱搞DP
Description《集合论与图论》这门课程有一道作业题,要求同学们求出{1, 2, 3, 4, 5}的所有满足以 下条件的子集:若 x 在该子集中,则 2x 和 3x 不能在该子集中。同学们不喜欢这种具有枚举性 质的题目,于是把它变成了以下问题:对于任意一个正整数 n≤100000,如何求出{1, 2,…, n} 的满足上述约束条件的子集的个数(只需输出对 1,000,000,001 取模的结果原创 2017-05-25 19:34:12 · 406 阅读 · 0 评论 -
bzoj 3879: SvT 后缀自动机+后缀树+虚树
题目大意:给定一个字符串,多次询问一些后缀两两之间的最长前缀和。 题解:首先可以很简单的看出是后缀树,然后就很自然地想到用后缀自动机来构建后缀树,然后就变成了一道裸的虚树DP。真是说起来容易啊,写的时候要注意一些问题,代表后缀的节点为第一次插入的节点,中间建的nq起到辅助节点的作用,然后,,,好像也没啥了,写了就知道了QAQ#include<cstdio>#include<cstdlib>#i原创 2017-04-12 22:00:27 · 572 阅读 · 0 评论 -
BZOJ 3450: Tyvj1952 Easy 期望DP
一道期望DP入门题,我们维护两个数组,一个是len数组,代表到达第i位期望连续长度为多少,len数组相当好维护,如果这位是o,那么len[i]=len[i-1]+1,如果这位是x,那么len[i]=0,如果这位是?那么len[i]就等于上述两种情况的值加和除以2,然后我们再维护一个ans数组,代表达到第i位的期望得分是多少,这个数组的维护也很显然,如果这位是o,那么ans[i]=ans[i-1]+2原创 2017-01-16 21:37:50 · 425 阅读 · 0 评论 -
BZOJ 1419: Red is good 期望DP
Description桌面上有R张红牌和B张黑牌,随机打乱顺序后放在桌面上,开始一张一张地翻牌,翻到红牌得到1美元,黑牌则付出1美元。可以随时停止翻牌,在最优策略下平均能得到多少钱。Input一行输入两个数R,B,其值在0到5000之间Output在最优策略下平均能得到多少钱。Sample Input5 1Sample Output4.166666HINT输出答案时,小数点后第六位后的全部去掉,不要原创 2017-06-23 21:43:59 · 617 阅读 · 0 评论