![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
DP
文章平均质量分 78
sunny606
这个作者很懒,什么都没留下…
展开
-
线段树和单调队列优化DP---POJ2373解题报告
在长为L(的草地(可看成线段)上装喷水头,喷射是以这个喷水头为中心,喷水头的喷洒半径是可调节的, 调节范围为[a,b]。要求草地的每个点被且只被一个喷水头覆盖,并且有些连续区间必须被某一个喷水头覆盖, 而不能由多个喷头分段完全覆盖,求喷水头的最小数目。 很容易想到,这可以用dp解决,定义dp[i]为覆盖[0,i]区间所需的的最小喷头数, 则dp[0]=0,dp[i]=min{dp[i-2*原创 2012-08-11 12:14:50 · 2036 阅读 · 0 评论 -
求最长升序子序列O(nlgn)的算法---HDOJ 1025
求解最长升/降序子序列是动规的经典问题,朴素动规的时间复杂度为O(n^2), 状态的转移方程为dp[i]=max{dp[j]}+1,其中j 现在我们对上面的转移方程再做一个限定,当有多个j满足条件时, 即有多条转移路径的时候,我们规定选择从元素值最小的那个状态转移, 并且用一个数组min[k]来保存dp值为k的最小元素,这样min数组的值 是单调递增的,所以在计算dp[i]时就可以用二分原创 2012-08-20 19:40:31 · 4840 阅读 · 0 评论 -
再谈升/降序子序列——POJ1631
上一篇文章介绍了如何求解最长升/降序子序列的长度,这篇文章讨论另一个与升/降序子序列有关的问题。 问题:将一个序列划分成单调的子序列最少可划分成多少个? 例如。序列:1、4、2最少可划分成2个单调递增的子序列:{1,2}、{4}或{1,4}、{2}; 乍一看,觉得这需要动规,其实这可以贪心。 在用动规求序列{1、4、2}的时候,我们要考虑的一个重要问题是,1是与4连接还是与2连接, 因为原创 2012-08-22 00:09:28 · 2869 阅读 · 0 评论 -
2012 ACM/ICPC Asia Regional Tianjin Online 1006_you are the one 解题报告
HDOJ 4283 You are the one 2012 ACM/ICPC Asia Regional Tianjin Online F 题 一道很悲情的DP题,比赛的时候没做出来,比赛结束后第17分钟才AC。 关键思想:最先进栈的元素最后出栈,例如第i个元素入栈,如果它最终的位置是在k,那么i 到 k 这一段中不可能有 k 位置后的数出现。 #include i原创 2012-09-09 17:41:10 · 3094 阅读 · 0 评论 -
树形DP 统计树中长度为K的路径数量 CodeForces 161D Distance in Tree
用DP方法统计一棵N(N<=50,000)个节点的树中长度为K(K<=500)的路径条数原创 2013-07-23 09:55:00 · 1731 阅读 · 0 评论 -
那些年我们写过的三重循环----CodeForces 295B Greg and Graph 重温Floyd算法
这个问题让我们再一次想起Floyd算法三重for循环背后的光芒。原创 2013-07-23 13:10:59 · 1872 阅读 · 1 评论 -
半天痛苦换来的教训,做一道DP经典水题----最长公共子序列 POJ 2250
一上午的痛苦换来的教训:作为程序猿,即使面对再熟悉再简单的问题也要时刻保持严密的逻辑。原创 2013-07-31 11:33:52 · 1273 阅读 · 0 评论 -
状态DP求哈密顿回路个数 CodeForces 11D——A Simple Task
统计图中哈密顿回路的数目原创 2013-08-01 19:26:13 · 3223 阅读 · 0 评论