dp
overcastt
这个作者很懒,什么都没留下…
展开
-
cf474e Pillars(线段树优化dp)
题意有n个柱子,每个柱子有一个高度hihih_i,每个柱子可以跳到它后面高度与它相差大于d的柱子(即|hi−hj|≥d|hi−hj|≥d\left | h_i-h_j \right|\geq d) 求最多可以跳多少个柱子题解ansi=max(ansj+1)(|hi−hj|>=d且j<i)ansi=max(ansj+1)(|hi−hj|>=d且j<i)ans...原创 2018-03-29 19:32:43 · 277 阅读 · 0 评论 -
bzoj5189: [Usaco2018 Jan]Cow at Large(树形dp)
ProblemBessieBessieBessie 站在一个点,每个叶节点可以放一个士兵,士兵和 BessieBessieBessie 都可以随意走动。如果士兵和 BessieBessieBessie 在同一点,那么 BessieBessieBessie 就被抓住。而 BessieBessieBessie 如果到达叶节点且一路上没有被士兵抓住,则算 BessieBessieBessie 出逃...原创 2018-09-17 20:49:32 · 286 阅读 · 0 评论 -
bzoj5190: [Usaco2018 Jan]Stamp Painting (dp)
Problem用 MMM 种长为 KKK 的印章(每种颜色均不同),给长为 NNN 的纸条盖章。问最后会得到多少种不同的状态。Solution反过来想,答案就是总数减去不合法情况。总数也就是每个块随便选颜色,即 mnm^nmn而每个印章长度为 KKK ,因此如果最长的一段相同颜色的长度小于 KKK ,那么就说明此情况不合法。那么我们现在的认为就是求不合法的情况。定义 f[i]f[i...原创 2018-09-17 20:50:26 · 223 阅读 · 0 评论 -
bzoj4361: isn (dp+树状数组+容斥)
Problem给你一个序列,若此时这个序列不是非降的,那么从中删除一个数,知道删到非降为止。问有多少种操作方案Solution定义 f[i]f[i]f[i] 表示长度为 iii 的非降子序列个数容斥一下, ans=∑f[i]∗(n−i)!−f[i+1]∗(n−i−1)!∗(i+1)ans=\sum f[i]*(n-i)!-f[i+1]*(n-i-1)!*(i+1)ans=∑f[i]∗(n...原创 2018-09-18 19:01:10 · 223 阅读 · 0 评论 -
bzoj1010: [HNOI2008]玩具装箱toy (斜率优化)
Solutionf[i]=min(f[j]+(i−j−1+sum[i]−sum[j]−L)2)f[i]=min(f[j]+(i-j-1+sum[i]-sum[j]-L)^2)f[i]=min(f[j]+(i−j−1+sum[i]−sum[j]−L)2)为了方便计算,我们定义 a[i]=i+sum[i]a[i]=i+sum[i]a[i]=i+sum[i] , b[i]=i+sum[i]+1+Lb...原创 2018-09-18 21:15:45 · 157 阅读 · 0 评论 -
bzoj1911: [Apio2010]特别行动队 (斜率优化dp)
Solution首先可以得到 dpdpdp 方程 f[i]=max(f[j]+a(sum[i]−sum[j])2+b(sum[i]−sum[j])+c)f[i]=max(f[j]+a(sum[i]-sum[j])^2+b(sum[i]-sum[j])+c)f[i]=max(f[j]+a(sum[i]−sum[j])2+b(sum[i]−sum[j])+c)f[i]=f[j]+a⋅sum[i]2...原创 2018-09-18 22:19:33 · 190 阅读 · 0 评论 -
bzoj1096: [ZJOI2007]仓库建设 (斜率优化dp)
Problem先有一些工厂,每个工厂有一些成品。先要在其中一些工厂的位置建立仓库,建立仓库会有一定的费用。每个没设立仓库的地方将成品运送至下面的仓库,费用为成品数乘距离。山脚一定有一个仓库。问最少需要的花费是多少工厂 iii 距离工厂 111 的距离 xix_ixi(其中 x1=0x_1=0x1=0);工厂 iii 目前已有成品数量 pip_ipi;在工厂 iii 建立仓库的费用 c...原创 2018-09-19 00:07:49 · 248 阅读 · 0 评论 -
bzoj2306: [Ctsc2011]幸福路径 (概率+dp)
题解设 f[t][i][j]f[t][i][j]f[t][i][j] 表示从 iii 到 jjj 走 2t2t2^t 步的最优解 会得到 f[t][i][j]=max(f[t−1][i][k]+f[t−1][k][j]∗p2t−1)f[t][i][j]=max(f[t−1][i][k]+f[t−1][k][j]∗p2t−1)f[t][i][j]=max(f[t-1][i][k]+f[t-1]...原创 2018-09-11 07:37:30 · 183 阅读 · 0 评论 -
【LightOj 1030】 Discovering Gold (概率+dp)
题意有 nnn 个格子,每个格子有一个 aiaia_i 值,每次掷筛子(1-6),走相应的步数,问最后得到的期望题解dp[i]=(dp[i+1]6+dp[i+2]6+⋯+dp[i+6]6)+a[i]dp[i]=(dp[i+1]6+dp[i+2]6+⋯+dp[i+6]6)+a[i]dp[i]=(\frac{dp[i+1]}{6}+\frac{dp[i+2]}{6}+\cdots+\f...原创 2018-09-11 07:37:57 · 129 阅读 · 0 评论 -
【LightOj 1027】 A Dangerous Maze(II) (概率、dp)
题意同LightOJ 1027 只不过添加一个条件:可以知道前 kkk 个是走的哪个房间 问出去的期望时间题解知道前 kkk 个的意思为走了 kkk 个负数以后,这 kkk 个可以不必走 定义 dp[i]dp[i]dp[i] 表示已经记录 iii 个负数的期望时间 答案即为 dp[0]dp[0]dp[0]下面的讨论中,我们定义 sum1sum1sum1 为正数和, su...原创 2018-09-11 07:38:57 · 169 阅读 · 0 评论 -
【51nod 1412】金牌赛事 (线段树优化dp)
problemnnn 条道路每条道路有一个花费,mmm 场比赛,第 iii 场比赛需要用到第 li−rili−ril_i-r_i 条道路,如果这些道路都建立了,可以得到一个花费 问选择其中的一些道路,得到的最大花费是什么题解设 f[i]f[i]f[i] 表示选择选择第 iii 条道路的最大值 因此 f[i]=max(f[j]−cost(j+1,i)+pay(j+1,1))f[i...原创 2018-09-11 07:56:35 · 186 阅读 · 0 评论 -
bzoj 5196: [Usaco2018 Feb]Taming the Herd (dp)
Solution f[i][j]f[i][j]f[i][j] 表示前 iii 天经历出逃了 jjj 次,且第 i+1i+1i+1 天进行了出逃 f[i][j]=min(f[k][j−1]+count(k+1,i))f[i][j]=min(f[k][j−1]+count(k+1,i))f[i][j]=min(f[k][j-1]+count(k+1,i)) 其中 count(x,y)count(x...原创 2018-09-14 18:26:25 · 156 阅读 · 0 评论 -
bzoj5195: [Usaco2018 Feb]Directory Traversal(树形dp)
Solution对于每个点,我们给一个权值 viviv_i (文件夹为长度,文件为长度-1) 然后dp就行了.. 转移要向上和向下分别考虑Code#include <cstdio>#include <cstring>#include <algorithm>using namespace std;#define N 100010#...原创 2018-09-14 18:28:56 · 202 阅读 · 0 评论 -
bzoj4069(UOJ110)【APIO2015】Bali Sculptures (数位dp)
Problem把 nnn 个数分成 xxx 组,求每组和的最小按位或值(A<=x=BA<=x=BAf[i][j]f[i][j]f[i][j] 表示前 iii 个数,分成 jjj 段的最小按位或值 f[i][j]=min(f[k][j−1]|sum(k+1,i))f[i][j]=min(f[k][j−1]|sum(k+1,i))f[i][j]=min(f[k][j-1]|sum(...原创 2018-09-14 18:30:02 · 200 阅读 · 0 评论 -
bzoj1040: [ZJOI2008]骑士(树形dp)
Problem每个人有一个战斗力值,有一个敌对对象。 每个人不能和他的敌对对象在一个军团。 问选出来的人组成一个军团且不存在敌对对象的最大战斗力和为多少Solution显然会出环(nnn 个点 nnn 条边),假如不考虑环的出现,就是相邻两点不能同时选的树形 dpdpdp 。加上环呢? 对应本题,会发现之多有一个环…读题可知… 因此 dfsdfsdfs 找到非树边 然...原创 2018-09-14 20:11:15 · 143 阅读 · 0 评论 -
【LightOj 1027】 A Dangerous Maze(II) (概率、dp)
题意同LightOJ 1027 只不过添加一个条件:可以知道前 kkk 个是走的哪个房间 问出去的期望时间题解知道前 kkk 个的意思为走了 kkk 个负数以后,这 kkk 个可以不必走 定义 dp[i]dp[i]dp[i] 表示已经记录 iii 个负数的期望时间 答案即为 dp[0]dp[0]dp[0]下面的讨论中,我们定义 sum1sum1sum1 为正数和, su...原创 2018-09-10 15:22:28 · 156 阅读 · 0 评论 -
cf833b:The Bakery(线段树优化dp)
题意cf833b n个数分成k段,求每段中不同数字个数的和的最大值题解dp[i][k]dp[i][k]dp[ i ][ k ]表示前i个数字分成k段的结果 dp[i][k]=max(dp[j][k−1]+num[j+1][i])(1<=j<i)dp[i][k]=max(dp[j][k−1]+num[j+1][i])(1<=j<i)dp[ i ][ k ]...原创 2018-03-29 21:05:42 · 275 阅读 · 0 评论 -
hdu2196:Computer (树形dp)
题意hdu2196 求树上每个点能到达的最远距离题解呜呜呜网上说是..基础题【捂脸】 下面说正题… 每个点能到达的最远距离无非两种,一种向下一直走到底,一种向上走一段在下到底 因此对于每一个点记录dp[i][0]dp[i][0]dp[i][0]表示子树中最远距离;dp[i][1]dp[i][1]dp[i][1]表示子树中次远距离;dp[i][2]dp[i][2]dp[i][...原创 2018-04-01 21:54:28 · 129 阅读 · 0 评论 -
poj3107:Godfather (树形dp)
题意poj3107 树上删去一个点以后,使形成最大的子树的结点数最小,求所有这样的点题解这题啊..是求树的重心【捂脸】 树的重心是啥呢~就是删除这个点后最大连通块的结点数最小 咋求呢 删除每个点后的最大连通块无非就是它的每个儿子的大小,或者是总结点数减去它所在的子树的大小…代码#include <cstdio>#include <al...原创 2018-04-01 22:47:54 · 162 阅读 · 0 评论 -
cf219D. Choosing Capital for Treeland (树形dp)
题意cf219d 一棵n个点n-1条有向边的树,求翻转最少的边,使这些个点都联通,问这样的点,从小到大输出题解既然要求翻转的最少,那我们可以给正向的边权值为0,反向的权值为1。这样以每个点为根时,整棵树的值就是需要翻转的边数代码#include <cstdio>#include <algorithm>using namespace st...原创 2018-04-02 16:02:30 · 194 阅读 · 0 评论 -
bzoj1835/lg2605:[ZJOI2010]基站选址 (线段树优化dp)
哇..假的假的…好难…. 为什么…这么多道题..我要先看这道………. 我以为第一道会很和蔼的啊啊啊可怕的..lg2605唉…其实..简单来说就是线段树优化dp….但是…依旧不会啊扎心方程其实也是可以写的 f(i,j)=f(k,j−1)+cost(k+1,i−1)+c[i],f(i,j)f(i,j)=f(k,j−1)+cost(k+1,i−1)+c[i],f(i,j)f(i,j)...原创 2018-05-29 23:49:59 · 124 阅读 · 0 评论 -
bzoj4566/洛谷3181 [Haoi2016]找相同字符] (后缀自动机+dp)
bzoj4566/洛谷3181 [Haoi2016]找相同字符题意:求两个字符串中各取除一个串使他们相同的方案数方法:显然,把第一个串建SAM,第二个串在上面跑匹配。 那么个数怎么计算呢,一般来说,我们求size表示它的个数,而这道题,我们需要的使前面的个数和而非后面的。 那么每个点的贡献怎么求呢,这个点已经能匹配上了,那么它的父节点也是可以的,所有结果是f[fa[p]]+size[p...原创 2018-06-16 01:07:48 · 356 阅读 · 0 评论 -
bzoj1810/洛谷P2051 [AHOI2009]中国象棋(状压dp)
bzoj1810/洛谷P2051 [AHOI2009]中国象棋题意:每行每列最多放两个,问有多少种情况方法:f[i][j][k]f[i][j][k]f[i][j][k]表示前iii行,有jjj列放一个,有kkk列放两个。然后根据乘法原理什么的就可以了#include <cstdio>#define ll long long#define mod 9999973ll f...原创 2018-06-18 12:54:17 · 268 阅读 · 0 评论 -
bzoj1494: [NOI2007]生成树计数 (状压+矩阵倍增)
bzoj1494: [NOI2007]生成树计数题意求使所有点连成一棵生成树的方案数代码#include &lt;cstdio&gt;#include &lt;cstring&gt;#include &lt;cmath&gt;#include &lt;algorithm&gt;using namespace std;#define M 65521原创 2018-07-11 15:45:47 · 295 阅读 · 0 评论 -
bzoj1181: [CROATIAN2009]IZBROI选举(二分+dp)
Problem一共有 VVV 张投票,nnn 个政党,mmm 个席位。现在每个政党有 aiaia_i 张票。对于每个政党,问通过给这个 nnn 个政党分配剩下的票,使得这个政党得到最多、最少席位是多少个。 席位得分配:对于所有政党,计算一次值:票数÷÷\div(席位数+1+1+1),然后给值最大的政党一个席位(若值相同,则编号小的政党获得)。重复此过程,直到席位分配完。Solutio...原创 2018-09-11 15:41:33 · 381 阅读 · 0 评论 -
【51nod 1503】 猪和回文(dp)
题意有一个 n∗mn∗mn*m 的格,每个格内有一个字母,猪从左上向右下走,每次只能向右或向下,问到达右下时所走路径是回文的情况数题解f[a][b][c][d]f[a][b][c][d]f[a][b][c][d] 表示从左上走到 (a,b)(a,b)(a,b) ,从右下走到 (c,d)(c,d)(c,d) 所经过的字符串相同的情况数f[a][b][c][d]=⎧⎩⎨⎪⎪⎪⎪...原创 2018-09-10 15:19:25 · 201 阅读 · 0 评论 -
【51nod 1412】AVL树的种类 (dp)
题意平衡二叉树(AVL树),是指左右子树高度差至多为1的二叉树,并且该树的左右两个子树也均为AVL树。 求 nnn 个点的AVL树有多少种形态题解设 f[i][j]f[i][j]f[i][j] 表示结点数为 iii,高度为 jjj 的种类数 f[i][j]=∑f[k][j−1]∗f[i−1−k][j−1]+f[k][j−1]∗f[i−1−k][j−2]+f[k][j−2]∗f[...原创 2018-09-10 15:19:45 · 173 阅读 · 0 评论 -
【LightOj 1038】 Race to 1 Again (概率+dp)
题意有一个数 DDD 每次除以他的一个因数得到一个新的 D′D′D',问 DDD 变成1的次数的期望题解dp[i]=dp[k]约数个数+1kdp[i]=dp[k]约数个数+1kdp[i]=\frac{dp[k]}{约数个数}+1 \quad k为 iii 的约数 (1−1约数个数)dp[i]=dp[k]约数个数+1k(1−1约数个数)dp[i]=dp[k]约数个数+1k(1-\f...原创 2018-09-10 15:20:50 · 102 阅读 · 0 评论 -
bzoj4318: OSU! (概率+dp)
题解设 f[i]f[i]f[i] 为以 iii 结尾的后缀1长度 g[i]g[i]g[i] 为以 iii 结尾的后缀1长度的平方 h[i]h[i]h[i] 为以 iii 的答案f[i]=(f[i−1]+1)∗p[i]f[i]=(f[i−1]+1)∗p[i]f[i]=(f[i-1]+1)*p[i] 因为 (x+1)2=x2+2x+1(x+1)2=x2+2x+1(x+1)^2=x^2+2...原创 2018-09-10 15:21:57 · 166 阅读 · 0 评论 -
bzoj1879 SDOI2009]Bill的挑战 (状压dp)
Problem求 nnn 个模式串,能匹配其中 kkk 个的字符串的个数匹配的含义为 若为 “?” 则与所以字母都匹配,若为字母,则需相同Solution首先看的 nnn 很小,然后可能使用状压 dpdpdp 来解决a[i][j]a[i][j]a[i][j] 表示第 iii 位这 nnn 个模式串在这一位是 ′a′&#x27;a&#x27;′a′+jjj 的程度f[i]...原创 2018-09-21 10:33:34 · 290 阅读 · 0 评论