动态规划-递推式加速
ruclion
天上一日,地下十年
展开
-
红绿黄染色,红绿个数为偶数
题目:用3种颜色染色一列~1e9,要求最终红色和绿色都为偶数,求方案数. 题解:减少规模的思维,数学上的递推.假设i-1列我们会搞,推i列,很好写出来递推式.之后用矩阵快速幂加速运算原创 2015-06-19 10:38:35 · 585 阅读 · 0 评论 -
poj3616
题目描述:有权值的区间且有休息时间,区间不可交叉,考虑每个区间的更新作用。题解:虽然很简单,但是帮我明白了一个事:数据结构维护最值和直接前缀维护最值的差别.如果我要的最值只要小于下表k就好,那么直接用前缀来维护就好.(比如本题).如果不是前缀,而是l到r的一个区间才行(比如书上的那一道)就必须用数据结构进行查询.具体到这题:对于lr,我们要l-rest之前的时间的最大值,之后我们需要整出来dp[r]原创 2015-06-23 15:22:40 · 365 阅读 · 0 评论 -
POJ 1769
要用线段树的dp题目描述:一堆m~5e5可已到达[l,r]的东西,不能改变顺序的从中挑选一些,使得1个在1的东西能够交换到n~5e4.题解:首先是dp[i][j],考虑完i个机器,1能够移动到j所花费的最小的长度.然后看每个机器怎么去更新,对于i:l,r, 首先拿出来dp[i-1][l]的值,一定是l到r最小的,然后用i,拿这个值去修改一下dp[i][l][r]的最小值,[i]可省略,用线段树来成端原创 2015-06-19 11:44:02 · 692 阅读 · 0 评论 -
用对角线将凸n边行分成三角形,问有多少种分法
题目描述:用对角线将凸n~1e6边行分成三角形,问有多少种分法.并且最后要%一个不是质数的m题解:第一步是用dp推出来怎么算.dp[n] = dp[2]*dp[n-1]….dp[k]dp[n-k+1]..dp[n-1][2], dp[2] = 1,dp[3] = 1,第二步是加速dp,发现这是一个卡特兰数,令c[n-1]=dp[n],然后c[n-1] = …. 相加都是n-1.c[1] = 1,原创 2015-06-26 15:52:13 · 1721 阅读 · 0 评论 -
tc633div1 550分
题目描述:给定原来由一些1~D面值的硬币凑出0~D面值的方案数模1e9+7,询问q次,每次询问移出number个value面值的硬币后凑出D面值的方案数。 每个硬币包括面值一样的硬币都是不同的. 要求q*D的时间复杂度.题解:对于每一个询问,需要d的复杂度算出来dp[d]. 先考虑简单的递推,如果number=1,那么其实dp[d] = f[d]-dp[d-1] 就行了. 这样dp过去.但是如果原创 2015-07-25 10:50:53 · 283 阅读 · 0 评论 -
UVALive 6908
题目描述:题意很啰嗦,总结起来就是:一个电动车,可以有4个档,每种档有自己的特性可以节省体力.一共可以换10次档.一共有50度点.一共有1000个段段,每个段和段之间都可以换一下档. 问按顺序跑完这么多区间之后花费的最少体力.还有100组数据题解:发现把所有的状态dp表示刚好复杂度是1e8.(增加一位表示当前是几档) 这时候千万不能记忆化搜索.只有在能够减掉很多分枝的情况下才能够用.因为递归 特别原创 2015-07-27 10:31:28 · 394 阅读 · 0 评论 -
hdu5322 三次多校1007
题目描述:题解:重点:代码:原创 2015-07-29 13:41:15 · 966 阅读 · 0 评论 -
Save the Trees
题目描述:一道特别好的题.给出1e5个树.这个树就是路边种的树= =.每个数有一个类型编号1 ≤ typei ≤ 1e5.每个数还有一个高度. 现在要把这些树分组.只有连在一起的才能分组.并且一个组内不能出现两个相同类型的树.一个组内的价值是最高高度的树的高度.题解:重点:代码:原创 2015-08-02 19:54:06 · 645 阅读 · 0 评论 -
codeforces 318 D. Bear and Cavalry
题目描述:D. Bear and Cavalrytime limit per test:3 secondsmemory limit per test:256 megabytesinput:standard inputoutput:standard outputWould you want to fight against bears riding horses? Me neither.Limak i原创 2015-09-10 16:45:32 · 489 阅读 · 0 评论