PKU解题报告
muye67
这个作者很懒,什么都没留下…
展开
-
pku 1821神奇DP
<br />废话不多说。dp方程很好写,dp[i][j]=max(dp[i-1][k]+cost[i]*(j-k))。当然也可以省略一维节省内存。然后这个N*K*N的算法必然TLE所以说要想优化。开始想的单调队列优化啊但是总想不清楚那个实现的过程。也想过要倒着枚举j,但是立即想到这前的k还没算出来呢。所以说被自己给否了。其实仔细想想就好了。对于第i个worker来说,它能够达到的最右边界是worker[i].s+worker[i].l-1。那么对于这个状态,它只能从dp[woker[i].s-1]这个状态转原创 2010-11-08 09:31:00 · 593 阅读 · 0 评论 -
pku 3017 单调队列优化DP
<br />首先是方程。很容易看出来。dp[i] = min(dp[j]+maxsum[j+1][i])。然后这个n^2的方程就必须要优化。<br />其实看。对于第i个数来说,它所在段的左边界是单调不减的。那么这个就比较类似单调队列了。<br />还有一点经验。我发现如果dp[i]的子问题如果是类似本题的好多个dp[j]的话就可以考虑用单调队列来优化。<br />开始我想的是,每算出一个状态来就把dp[i]放进队列里。那么要删哪些呢?显然,由于长度i是递增的,那么i一定大于前面入队的长度。对于其后状态的影原创 2010-11-10 09:16:00 · 2091 阅读 · 0 评论 -
pku 1848 树形DP
<br />这题就是麻烦点儿。细节比较多吧。其余没什么很天马行空的思维。<br />可能单纯给你这道题,让你看出是树形DP的话不太容易吧。<br />看上去很不好入手的一道题,但其实并不是很难做。只要想到了是树形DP。怎么说呢,这就是要学习找突破口吧。国内的赛题毕竟不如UVA或者TC之类的,学长的话说是你找不到模型的。很考想法的那种。所以说多积累一些模型还是比较有利于赛时联想然后迅速找突破口的。<br />对于某个节点来说,我们考虑它所在的那棵树。这个点可能和它的儿子组成一些环,也可能不跟它儿子组而余外留下原创 2010-11-11 11:32:00 · 967 阅读 · 0 评论