dp
文章平均质量分 79
work_freedom
这个作者很懒,什么都没留下…
展开
-
sgu 225 Little Knights 状态压缩dp
这道题好无语呀,500ms时限,60m的内存。 如果没有内存限制,我们可以很容易的想到 DP[U][V][ROW][KNIGHT] U 代表上一行的状态,V代表上上一行的状态。因为当前行只与前两行的状态有关。ROW代表行数,knight代表骑士数目。 然后dp就很简单了 DP【U】【V】【ROW】【KNIGHT】 = SUM(DP【V】【i】【ROW-1]【KNIGH原创 2013-02-15 16:32:38 · 755 阅读 · 0 评论 -
sgu 223 Little Kings 状态压缩dp
下一行的状态只受前面一行的影响。 先预处理出在一行中互相无冲突的状态,用数字来表示。比如 一行为3列,那没有冲突的状态就有:(1代表国王,0代表无) 0 0 0 --------> 0 0 1 0 -------->2 0 0 1 --------> 4 1 0 0 --------> 1 1 0 1 --------> 5 .... 这样列处理好了,就只用以行为阶段进行原创 2013-02-15 11:14:13 · 682 阅读 · 0 评论 -
ural 1078 Segments
可以将x轴的先有序化,也可将y轴的先有序化。 比如样例以x轴有序化后: -3 3 ; -2 2; -1 1; 4 5; 现在以x轴从小到大枚举。 只需求出比当前 y轴数值大的 以前的y 所对应的包含个数的最大值即可。我是用线段树来寻找最大值。 #include #include #include #include #include #include #in原创 2013-02-19 09:59:26 · 373 阅读 · 0 评论 -
UVA 12524 Arranging Heaps 动态规划 斜率优化
定义dp[i][j] 代表在i这个地方放一个Heap , 从1到i这个区间一共放了n个heap,最小的cost。 很容易想到dp转移方程:dp[i][j] = min { dp[k][j-1] + cost ( k ,i) } ( 1 这是2d/1d的dp 还有优化余地。 展开转移方程: dp[i][j] = min ( dp[k][j-1] + (p[i].h原创 2013-05-12 00:20:43 · 2177 阅读 · 0 评论 -
Codeforces Round #185 (Div. 1) B - Cats Transport DP 斜率优化
将小猫对应对应到起点就是很板的题目了额 比如miao是在h[i] ,h[i]这个点距离原点的距离是x,miao出现的时候为y,对应以后的距离就是y-x,说明从y-x时刻出发能达到该miao 样例对应以后排序就是 0 0 0 8 9 10 记为d数组 那你选择从0 和 10 出发,花费就是 0+0+0+2+1+0 =3 很容易得出dp转移方程了额 : DP[K][I] = MI原创 2013-05-29 20:57:18 · 1225 阅读 · 0 评论 -
Codeforces Round #186 (Div. 2) D Ilya and Roads DP 单调优化
刚开始犯2去想肿么建图了。 dp还是很好想: 定义 dp[i][x] 表示从 1 到 i 被覆盖了x个洞需要的最小花费。转移方程很简单, 对于 j >i 的有:dp[j][ x + j-i ] = min ( dp[j][ x + j-i ] , dp[i ][ x] + mincost( x+1,y)); 这里的mincost(x+1,y)表示要完全覆盖 从x+1到 y这个原创 2013-05-31 13:57:44 · 1099 阅读 · 0 评论