
Dynamic Programming
文章平均质量分 65
wyfcyx_forever
这个作者很懒,什么都没留下…
展开
-
BZOJ1578 USACO 2009 Feb Gold 2.Stock Market
题意:有S种股票,我们已经知道原创 2014-09-18 19:13:06 · 1871 阅读 · 2 评论 -
BZOJ1575 USACO 2009 Jan Gold 2.The Baric Bovine
题意:自行脑补。 Sol:水dp,建立两个设原创 2014-09-17 20:27:30 · 1221 阅读 · 1 评论 -
POJ3017 Cut The Sequence
题目大意:将一个非负整数序列切成连续的若干段,使得每一段的和均不超过一定值,在此基础上最小化每一段的最大值的和。 思路:O(N2)的动态规划方程非常明显: fi=min0≤ji{fj+maxj+1≤k≤i{wk}} 这样利用RMQ的预处理即可做到O(N^2). 不过这样显然是不能AC的。 我们考虑能够进行什么优化。 我们发现以下性质: (1)fi≤fj(1≤ij≤原创 2014-10-24 22:53:17 · 1067 阅读 · 0 评论 -
BZOJ1584 USACO 2009 Mar Gold 2.Cleaning Up
题目大意:有长度为N的颜色段,共有m种颜色,要将其划分成若干段,每一段的费用为这一段的不同颜色的数目的平方。求最小总费用。 Sol: 首先我们注意到答案不超过n,因为我们显然可以将每一个划分为一段,答案为n. 于是每一段的颜色总数不超过sqrt(n). 因此我们维护最后出现的sqrt(n)种颜色最后出现的位置,进行转移。 总的时间复杂度为O(n*sqrt(n)). Co原创 2014-09-22 08:07:40 · 1445 阅读 · 0 评论 -
BZOJ1040 [ZJOI2008]骑士
题意:基环树最大独立集 思路: 像这种题就是朴素的树形dp非常容易的,我们用一些技巧转化为变体树。 直接套用仙人掌的动态规划做法:(基环树事实上也属于一种仙人掌) 首先利用tarjan算法,如果遇到自己与儿子之间的边为割边则按照树边处理。 Tarjan后看一下与自己相连的边,如果某个相邻点不是自己的儿子,并且入栈序比自己大,那么说明自己是环上的的最高点,此时我们对环上特别的进行d原创 2014-10-17 11:16:39 · 974 阅读 · 0 评论 -
BZOJ1025 [SCOI2009]游戏
题意:对于一些长度为n的排列,将其作为一个置换,那么可能有一个自置换的次数使其回到1,2,3,...,n的情况。求对于所有能够回到1,2,3..,n的排列,不同的次数共有多少种。 思路:我们将置换划分成循环节的形式,那么我们发现最终可能的置换一定是这种形式: (2,1)(3)(5,6,4)(7) 1,2->2,1 3->3 4,5,6->5,6,4 7->7 并且,若一段的长原创 2014-10-18 15:24:15 · 2179 阅读 · 0 评论 -
BZOJ1827 [Usaco2010 Mar]gather 奶牛大集会
题意:给定一棵树,求出树上的一点,使得树上的所有点到该点的距离之和最小。 思路:暴力显然是O(N^2)等死对吧。 我们首先将无根树转化为有根树,然后一边dfs求出f[i],size[i]. f[i]表示以i为根的子树中所有的点到i的距离之和,size[i]表示以i为根的子树的点数。 下面开始脑洞大开: 现在对于我们一开始的那个root,我们已经知道了答案。问题就是如何快速原创 2014-10-21 16:23:30 · 1184 阅读 · 0 评论