dp
TelmaZzzz
HEU ACMer
展开
-
HDU 5575 Discover Water Tank(线段树+自底向上dp+并查集)
题意给定n个挡板和m次回答,每次回答为x号水池的H+0.5高度是否有水,问这些回答互不矛盾的最大集合。题解设定状态dp[i][0-1]代表第i个区间枚举到当前回答后有水的最大不矛盾集合和没水的最大不矛盾集合。1代表有水,0代表没水。我们将回答的H从小到大排序后升序枚举,对于第i个回答,我们可以用线段树定位出其所影响的区间[l,r]在这个区间内去进行dp转移。同时我们还发现若枚举到了一定的高...原创 2019-11-01 11:28:28 · 254 阅读 · 0 评论 -
gym 102056 J Philosophical … Balance (SAM)
题意小B有一个串s,小A可以设定自己选取s后缀串的概率,使得小B拿出s串的后缀使得sas_asa和sbs_bsb的lcp的期望最小,问小A设置方案中最大可能期望是多少。题解首先将s的反串丢入SAM中,建立出后缀树,可以发现一个规律为两结点的lcp即位他们两的lca结点的len,因此可以将该问题想象成树的合并设val[i]代表i点为根的子树期望最小最大值是多少考虑一颗子树中如何找到答案...原创 2019-09-26 21:56:47 · 383 阅读 · 0 评论 -
gym 102056I Misunderstood … Missing (DP)
题意给定n天,每天的一开始攻击力A会提升D,接下来会有3种操作可以选择攻击并造成A+a[i]的伤害D+b[i]A+c[i]现A与D初始化值都是0,问第n天后最多能造成多大的伤害题解容易倒着去维护是比较好维护的(因为你可以记录一个状态代表攻击的累加天数去处理2操作)想到的dp状态是dp[i][j][k][p]代表第i天砍了j刀,用了k次c,攻击天数累加为p的最大伤害,可以发现这样空...原创 2019-09-26 21:37:06 · 259 阅读 · 0 评论 -
SEERC 2017 B Bricks(dp)
题意在一个长为n的空队列中,m次操作间一块砖扔到posipos_iposi的位置当posipos_iposi已经有砖则砖落到任意两侧的空位,不得超过头尾。问m次操作后队列有几种可能的形状题解设dp[i]dp[i]dp[i]代表第i处不放砖,前面放满了iii前面操作的所有砖头,num[i]num[i]num[i]代表空位为i的方案数。明显的看出num[0]=1,我们发现m次操作的顺序与结...原创 2019-09-02 12:07:34 · 513 阅读 · 0 评论 -
2018HDU多校补题 HDU 6331(dp)
题意:给定nnn为505050的有向图,给出1e61e61e6的问题,问从sss到ttt至少走kkk步的最短路题解:定义dp[st][i][j]dp[st][i][j]dp[st][i][j]表示恰好走st步从i到j的最短路。那么我们输入的值则是dp[1][u][v]dp[1][u][v]dp[1][u][v]之后就可以想到一个很容易想到的转移 类似于flord算法 dp[st][i][...原创 2019-07-11 23:58:57 · 198 阅读 · 0 评论 -
codeforces 793D Presents in Bankopolis
题解:大致题意为给定n最大为80的直线点阵,并给出m条单向路,且这m条路能走的条件是,路经过的点没有被访问过,问走完K个点的最小代价。起点任意,终点任意由于n很小,第一反应是往费用流想,后来发现无法建图(可能是我太菜了) 之后考虑到是条直线,于是往区间dp的思路去想发现这个转移很好想到dp[now][l][r][k]表示当前在now这个点,只能在(l,r)中找点,需要访问K-k个点的最小代价...原创 2019-04-30 01:22:07 · 301 阅读 · 0 评论 -
BZOJ4318:OSU!(概率dp)
题解:这种x3x^3x3的题很容易想到用x2x^2x2,x1x^1x1这两个状态来转移过来。因为我们发现(x+1)3(x+1)^3(x+1)3拆开可以用这三个东西来表示。于是定义状态dp[i][3]dp[i][3]dp[i][3]第二维的1表示长链尾部连续1的x1x^1x12表示长链尾部连续1的x2x^2x23表示答案详细转移见代码 核心思想就是三次方和平方的分解代码:#incl...原创 2019-04-10 00:36:12 · 226 阅读 · 0 评论 -
BZOJ3036 绿豆蛙的归宿(期望dp)
题解:这题是DAG上的期望dp。确定dp状态dp[i]表示从i点到n点所需要的期望值之后就可以很轻易的想到反向连边,为了保证每次枚举到的点不是未枚举到点的自状态,需要用拓扑序来维护枚举顺序。之后就是dp的转移dp[y]=(dp[x]+wei[i])/outdeg[y]dp[y]=(dp[x]+wei[i])/outdeg[y]dp[y]=(dp[x]+wei[i])/outdeg[y]代...原创 2019-04-10 00:29:44 · 165 阅读 · 0 评论 -
BZOJ4008: [HNOI2015]亚瑟王(期望dp)
题解期望dp 但是这题要往概率去想转移方程。设dp[i][j]dp[i][j]dp[i][j]表示轮到第i张牌时还剩j轮的概率这种情况下第i张牌发动技能的概率是dp[i−1][j+1]∗(1−(1−p[i])j+1)dp[i-1][j+1]*(1-(1-p[i])^j+1)dp[i−1][j+1]∗(1−(1−p[i])j+1)其意思就是这j轮中存在一次发动技能另一种则是j轮都没发动技能...原创 2019-04-09 20:04:20 · 150 阅读 · 0 评论 -
BZOJ 1426收集邮票(期望dp)
题解:这题确立两个状态 这两个状态都很好想 一个是dp[i]表示已经有i张邮票还需天数的期望,显然dp[n]=0第二个状态即g[i]表示已经有i张邮票还要花多少钱,显然g[n]=0然后转移也很好想对于第一状态会有2种情况 一种是买到了没有的邮票 一种是买到了有的邮票相应动转移dp[i]=dp[i+1]∗(n−i)/n+dp[i]∗i/n+1dp[i]=dp[i+1]*(n-i)/n+dp...原创 2019-04-11 00:16:19 · 177 阅读 · 0 评论 -
bzoj3450(期望dp)
题解:这题与OSU!那题类似。设立1.最后连续o的 分数计算规则是a2.答案 这两种状态即可具体看代码即可知代码:#include <map>#include <set>#include <ctime>#include <cmath>#include <queue>#include <stack>#in...原创 2019-04-11 00:06:14 · 219 阅读 · 0 评论 -
ZOJ3640(期望dp)
题解:期望dp重要是转移状态的确定,而一般来说转移状态一般会用一个有范围的状态去限定,这题有限的状态量可以想到的是Cain的攻击力,(不超过2e4)于是可以确定以下状态 dp[i]dp[i]dp[i]表示在当前攻击为i时所需要的天数期望于是可以自然想到转移如果i值大于c[i]则dp[i]+=t[i]/ndp[i]+=t[i]/ndp[i]+=t[i]/n否则 dp[i]+=(dp[i+...原创 2019-04-11 00:02:28 · 223 阅读 · 0 评论 -
[kuangbin带你飞]专题二十二 区间DP
前言:区间dp的题目一般有几个显然的模式,比如n的范围小于1000,且通过手动模拟发现没法贪心的题。对于dp方程一般可以往 对区间内的贡献或者是对区间外的贡献这两个角度去考虑。(有时需要逆向思维去考虑)对于dp状态的增加维,一般用于处理区间边界的状态。做区间dp的题经常会用到前缀和来预处理状态之间转移的关系。正文:A ZOJ-3537题解:这题可以划分为两个问题,一个是判断凸...原创 2019-03-18 19:00:52 · 175 阅读 · 0 评论 -
[kuangbin带你飞]专题十五 数位DP(Except I K)
A-cf55D题解:题意大致是求[l,r][l,r][l,r]区间内各个位上的数都是其因子的个数。考虑dp[len][digit][pre][num2][num3][num5][num7]dp[len][digit][pre][num2][num3][num5][num7]dp[len][digit][pre][num2][num3][num5][num7]preprepre记录其值mod...原创 2019-02-26 00:44:35 · 203 阅读 · 1 评论