
dp
文章平均质量分 81
jijijix
这个作者很懒,什么都没留下…
展开
-
Uva11021 tribbles 概率dp
/* 题目描述:有k只麻球,每只麻球只能活一天,该麻球在存活期间繁衍i只麻球的概率为P[i](0<=i < n),现问这k只麻球在m 天内死光的概率是多少?(m天内,不是问正好m天死光) 方法:概率dp,dp[i]表示一只麻球及其后代在i天内死光了的概率,那么y dp[i] = P[0] + P[1] * (dp[原创 2016-08-04 09:52:01 · 265 阅读 · 0 评论 -
codeforces div2 346 G Fence Divercity Dp + 计数
/* 题目描述:在一个类似俄罗斯方块的图中,从最顶部(一定是顶部)拿走连通的一些正方形块,(题目及图片见底部),问一共有多少种拿法。 思路:首先把所有h[k]减1,保证不会掏空; 设dp1[i]表示如果拿的最后一个方块在第i列,拿法的种数; dp2[i]表示如果第i列的高度高于第i+1列,最后一个方块在第i列且最后一个方块的高度小于等于原创 2016-12-16 21:29:40 · 266 阅读 · 0 评论 -
codeforces round 355 div2 D Vanya and Treasure Dp 二维线段树
#pragma warning(disable:4786)#pragma comment(linker, "/STACK:102400000,102400000")#include#include#include#include#include#include#include#include#include#include#include#include#include原创 2016-12-16 22:54:45 · 289 阅读 · 0 评论 -
Counting the String 动态规划 + KMP
/* 题目描述:给出一个长度为n(0 < n < 2e6)的字符串s,问其共有多少子串与s的任一前缀相等。 思路:假设字符串下标从1 ~ n ,dp[i]表示以i结尾的字串中包含前缀的个数,f[i]表示长度为i子串前后最大公共长度。 令p = f[i] , 则dp[i] = dp[p] + 1 这样转移的原因原创 2017-02-07 16:08:10 · 412 阅读 · 0 评论 -
POJ1625 Censored! AC自动机+dp+高精度
/* 题目描述:给出一个有n个字符的字符集,再给出p(0 <= p <= 10)个模式串,问长度为m的字符当中有多少个不含有 任一模式串作为子串。 思路:AC自动机的套路,字典树上的每一个节点表示一种状态,设dp[j][i]表示j节点状态,长度为i的串中满足条件的 有多少个,则有dp[j][i] = Σdp[k][i原创 2017-02-17 20:06:12 · 431 阅读 · 0 评论 -
hdu5632 Rikka with Array 数位dp
Rikka with ArrayTime Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 301 Accepted Submission(s): 119Problem DescriptionAs we know, Rik原创 2017-02-27 19:26:49 · 370 阅读 · 0 评论 -
codeforces 533B Work Group 树型DP
/* 题目描述:给出一棵树,树的每个节点代表一个人,每个人有一个工作的效率e[i],现从树中选出一些人组成一个工作组, 工作组的要求是工作组当中的每个人的下属的数量为偶数。现在问e[i]总和最大的工作组的工作效率总和是多少。 思路:dp1[u][0]表示在u的直接或间接下属中找到偶数个工作组,然后由u来领导他们时,这个工作原创 2017-02-18 14:38:00 · 754 阅读 · 0 评论 -
hdu5816 Hearthstone 状态压缩dp
/* 题目描述:在牌堆中有n+m(n+m <= 20)张牌,其中n张是A类牌,m张是B类牌,每摸到一张A类牌,可以再摸两张, 每摸到一张B类牌,可以对敌人造成该张牌上标出的伤害,现在已知敌人的血量,牌堆中的牌被任意顺序放置,问有多大的 概率可以斩杀敌人。 思路:用状态压缩来解决此问题,将m张B类牌压成一个正整数st,dp[i][st]的原创 2017-01-21 23:07:59 · 314 阅读 · 0 评论 -
Hdu5860 Death Sequence
/* 题目描述:一共有n个人,编号分别是1 , 2 , ... ,n,给定一个数k,每一轮杀死编号为1,1+k,...,1+mk的人,再将剩下 的人重新按照1,2,...编号,再杀死编号为1,1+k,...,1+mk的人,依此类推直至杀死所有人,给出1e6个询问,每次询问 给出一个t,问第t个被杀死的是谁。原创 2017-01-23 10:22:26 · 295 阅读 · 0 评论 -
Scout YYF I 概率dp + 矩阵快速幂
/* 题目描述:在一条道路上,每个位置有1个编号,编号分别是1 , 2 , ......现在有n(1 <= n <= 10)颗地雷,第i个分布位置的 处的编号为x[i],其中1 <= x[i] <= 100000000 现有一个人从位置1开始,问他在不踩到地雷的情况下穿过这条路 的概率原创 2017-02-13 21:56:08 · 316 阅读 · 0 评论 -
ZOJ3329 One Person Game 概率dp
/* 题目描述:有三个骰子,每个上面的数值分别是1~K1 , 1 ~K2 , 1 ~K3,有一个计数器,其初始值为0,现在抛三枚 骰子,如果当前计数器的值加上这三枚骰子的点数和大于n,那么游戏结束,否则将计数器的值加上点数和后 游戏继续,但是,如果掷出的三枚骰子的值为a,b,c时,计数器的值清零,先问游戏中投掷骰子的期望是多少? 思路:设dp[原创 2017-02-15 09:25:56 · 274 阅读 · 0 评论 -
codeforces round 396 div2 E Mahmoud and a xor trip 按位操作+dp子树内外
d every city with greater index as a finish. They want to know the total distance between all pairs of cities.InputThe first line contains integer n (1 ≤ n ≤ 105) — the number of cities in Mahmo原创 2017-03-02 20:12:59 · 397 阅读 · 0 评论 -
codeforces 771D Bear ans Company 动态规划
E. Bear and Companytime limit per test1 secondmemory limit per test256 megabytesinputstandard inputoutputstandard outputBear Limak prepares problems for a programming com原创 2017-03-28 17:12:10 · 1324 阅读 · 0 评论 -
bzoj1021 循环的债务 dp + 暴力
1021: [SHOI2008]Debt 循环的债务Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 957 Solved: 503[Submit][Status][Discuss]Description Alice、Bob和Cynthia总是为他们之间混乱的债务而烦恼,终于有一天,他们决定坐下来一起解决这个问题。不过原创 2017-05-20 11:15:52 · 631 阅读 · 0 评论 -
codeforces 486D Valid Sets 树形dp + 计数
/* 题目描述:给出一棵树, 每个点有一个权值,一个合法的集合定义为: 一个连通的点集,其中最大权值与最小权值之差小于等于已知的常数d 思路:分别枚举每个点作为集合中的权值最大点时,对应的合法的集合有多少种,最后将每个点计算出来的数相加即可。 对于某个点root,满足root是集合中原创 2016-11-21 22:34:44 · 292 阅读 · 0 评论 -
codeforces round 362 div2 D Puzzles 树形dp + 期望
/* 题目描述:给出一棵有根树,从根节点开始进行dfs,同一层次上的节点dfs的顺序是随机且等可能的,按照节点 的访问顺序给每个节点编号,现在问每个节点上编号的数学期望是多少。树中节点不超过1e6个。 思路:设dp[u]表示u编号的数学期望,cnt[u]表示以u为根子树的节点总数,brother[u]表示与u原创 2016-12-01 18:04:42 · 272 阅读 · 0 评论 -
LightOJ 1079 Just another Robbery 概率dp
/* 题目描述:有n件物品,盗走第i件物品可以得到财产m[i],但同时有p[i]的概率被抓住,现要求从这n件物品中取走若干件, 使得得到的财产量最多,又要保证被抓住的概率小于P 思路:dp[i][j]表示到第i件物品时得到财产j时被抓住的概率最小值,则有 dp[i][j] = min(dp[i - 1][j] , dp[i - 1][j原创 2016-08-27 21:21:42 · 510 阅读 · 0 评论 -
Uva 11427 Expect the Expected 概率dp 求数学期望
/* 题目描述:有一个人跟人打牌 , 每局赢的概率是p ,他一晚上最多跟人玩n局,但如果他当前的胜率超过了n,那么 他就会心满意足地去睡觉,如果他的胜率不能超过p , 那么他就会一直跟人打下去直到玩足了n把,一旦玩足 n局胜率还没有超过p,他就会垂头丧气地去睡觉并且今后再也不打牌了,问这个人平均玩牌能玩几晚上 方法:原创 2016-08-08 18:18:28 · 408 阅读 · 0 评论 -
LightOJ 1030 Discovering Gold 概率dp
/* 题目描述:给出一个长度为n的洞穴,洞穴中每一处有一个价值为x[i]的宝藏,起初时位置在1处,现在用掷色子的方法决定 向前走几步,如果向前走掷出的步数后超过n,那么就重新再掷一次,现在问走到n时获得宝藏值的数学期望是 多少。 思路:设dp[i]表示从i位置走到n时获得的宝藏值的数学期望原创 2016-08-20 11:36:43 · 308 阅读 · 0 评论 -
Uva11762 Race to 1 数学期望
/* 题目描述:给定一个整数n,每次随机选择一个小于n的素数y,如果n能整除y就耗费一单位时间将n变为n/y,否则耗费 一单位时间,n不发生变化,问平均花费多少时间能把n变为1 思路:设dp[x]表示将x变为1的时间数学期望,p(x)表示小于等于x的素数个数,则有 dp[x] = Σ 1/p(x)原创 2016-08-21 12:12:16 · 386 阅读 · 0 评论 -
POJ3666 making the grade dp+前缀+离散化
/* 题目描述:给出一个包含n个数的序列a1,a2,...,an,先要把该序列修改成不严格单增的序列,假设修改成 b1,b2,...,bn的花费为 |a1 - b1|+|a2 - b2|+...+|an - bn|,问最小花费是多少? 方法:要做这道题,首先要明白一点,修改后的数一定是原序列中的一个数原创 2016-09-15 17:01:02 · 441 阅读 · 0 评论 -
codeforces 713C(Round #371 Div2 E) Sonya and Problem Wihtout a Legend Dp + 前缀 +离散化
/* 题目描述:给出一个包含n个数的序列a1,a2,...,an,先要把该序列修改成严格单增的序列,假设修改成 b1,b2,...,bn的花费为 |a1 - b1|+|a2 - b2|+...+|an - bn|,问最小花费是多少? 方法:非常类似于POJ3666,建议先把这道题AC,为了转化成POJ3666,需对性质进行如下分析:原创 2016-09-15 18:13:47 · 510 阅读 · 0 评论 -
LightOJ 1038 Race to 1 again 期望+概率dp
/* 题目描述:给定正整数n,每次任意选择n的一个因子并除掉,问平均一共要除多少次能把n变成1 思路:设dp[x]表示把x变为1的期望,f[x]表示x的因子个数,根据全期望公式和期望的线性公式可得 dp[x] = Σ(1/f[x])*(1 + dp[x / y])(y是x的因子且y不是1) + (1/f[x])*(1 + dp[x]原创 2016-08-27 10:15:16 · 512 阅读 · 0 评论 -
codeforces round#353 trians and statistic dp+贪心+线段树
题目描述:有n个车站,第i(1 sum = Σp(i , j) (1 思路:在车站i处,可以用一张车票到达[i + 1 , a[i]]中的一站,那么,应选择m车站再买一张车票,其中m∈[i + 1 , a[i] ]且a[m]最大,为什么是这样呢?如图: 设m'是不同于m的一个车站,a[m'] 线段( i , a[m'] ]部分通过两种原创 2016-10-11 21:53:18 · 438 阅读 · 0 评论 -
codeforces round313 div2E Gerald and Giant Chess dp+组合数
/* 题目描述: 给出一个h * w棋盘以及棋盘上的若干棋子“卒”,卒每次只能向右或向下走一格,棋盘上有些点是不允许经过的坏点; 现问一个“卒”从(1,1)走到(h,w)一共有多少种走法? 方法:dp[i]表示从(1,1)到走到第i个坏点,且第i个坏点是走到的第一个坏点的走法种数,由于卒只能从左上的格子走到右下 的格子原创 2016-09-30 09:46:47 · 273 阅读 · 0 评论 -
2016-2017 ACM-ICPC, NEERC, Southern Subregional Contest J Bottle动态规划
/* 题目描述:给定n个瓶子,每个瓶子里装一些水,瓶子i的容量是b[i],已经装了的水的量是a[i],现在选择尽量少的 瓶子,把所有水都倒到这几个瓶子里,保证所用瓶子数最少的条件下,要求倒的水的量尽量少,问最少 需要的瓶子数和对应的最小的倒水的量。 思路:dp[i][j][s]表示在前i个瓶子里,原创 2016-10-28 16:26:44 · 543 阅读 · 0 评论 -
hdu1561 the more , the better 树形dp
/* 题目描述:给出n各城市,每个城市i有一个宝藏val[i],想要攻打城市并获得i的宝藏,需要先攻打城市pre[i],问攻打m个城市 能获得的最大的宝藏的值是多少 思路:首先根据攻打的先后关系建立一棵有根树,然后在树上进行dp 设dp[i][j]表示在i的子树中取一个包含i在内的合法形态的树原创 2016-11-16 20:57:11 · 269 阅读 · 0 评论 -
codeforces round 360 div2 E The Values You Can Make Dp
/* 题目描述:给出n个硬币,面值分别为c1,c2 , ... , cn,给出巧克力的价格k,对于能够组成k的任一组合,记录这个组合中 的硬币所能组成的所有的面值x,输出所有的x。所有的数据>= 1 且 方法:设dp[k][i][j]表示用前k个硬币,原创 2016-11-30 20:30:16 · 405 阅读 · 0 评论 -
hdu4326 Dragon Ball 单调队列优化Dp
/* 题目描述:一个有m个回合,每回合会出现n个龙珠,每个龙珠的位置是ball[i][j].p,得到龙珠的消耗是ball[i][j].c,每回合出现 的龙珠只能选择其中的一个,每回合消耗的体力为获得上一个龙珠到这一个龙珠的距离加上获取这一个龙珠的消耗,问 m回合过后,消耗的体力最小是多少。原创 2016-12-11 11:45:32 · 349 阅读 · 0 评论 -
bzoj1053 反素数 数论 + dp
1053: [HAOI2007]反素数antTime Limit: 10 Sec Memory Limit: 162 MBSubmit: 3252 Solved: 1879[Submit][Status][Discuss]Description 对于任何正整数x,其约数的个数记作g(x)。例如g(1)=1、g(6)=4。如果某个正整数x满足:g(x)>g(i) 0原创 2017-05-20 17:34:24 · 406 阅读 · 0 评论