-----堆/优先队列
LIN452
(*╹▽╹*)
展开
-
USACO2011Open Gold Bookshelf 题解
可以把题目理解为在n本书中”切几刀”. 当n2)可以解决: dp[i]表示在前i本书,第i本书为当前书架的最后一本书的最小高度.dp[i]=min{dp[j]+mx[j+1,i]}且sum[j+1,i] 当n 通过dp[i]=min{dp[j]+mx[j+1,i]},当mx[j+1,i]为h[i]时,j越小越优.假设在i前面,第一本比i高的书下标为x,如原创 2016-06-28 17:48:19 · 839 阅读 · 0 评论 -
BZOJ2800/POI2012 Leveling Ground
Task 给出n个整数X_1,X_2,…X_n,再给出两个正整数a、b,可以进行下面四种操作: 1. 选择正整数l,r (1<=l<=r<=n),将X_l,X_{l+1},…,X_r都加上a。 2. 选择正整数l,r (1<=l<=r<=n),将X_l,X_{l+1},…,X_r都减去a。 3. 选择正整数l,r (1<=l<=r<=n),将X_l,X_{l+1},…,X_r都加上b。 4原创 2016-10-09 22:24:42 · 823 阅读 · 0 评论 -
BOZJ1528/POI 2005Toy Cars
假设地板上能放足够多的玩具,那么肯定一次性将所有玩具都拿下来.可是题目中有了k这个限制.为了完成题目的要求,不得不将某些玩具拿回去,使得新玩具有地方放置.那么问题就是将什么玩具拿回去.如果某个玩具x之后不再出现,那么一定将它拿走,既不会对答案产生影响,又有利于以后的玩具放置.万一没有不再用的玩具了,只能将某个暂时不玩但以后还要玩的玩具y,要选择的是下一次出现的时间最晚的玩具y. 对于每个y,拿回架原创 2016-10-27 07:06:29 · 582 阅读 · 0 评论