各类动态规划及优化
文章平均质量分 54
yearwhk
一个沙茶的OIer...
展开
-
BZOJ 1597 斜率优化
题目链接: http://www.lydsy.com/JudgeOnline/problem.php?id=1597 作为一个非权限狗,我抱着侥幸心理在BZOJ上搜了一发USACO,结果发现了这道题。。然后想出了一个DP,然而超时。。然后就百度一下,于是被安利了一个DP的经典优化技巧——斜率优化 完整题解如下:① 注意到有一些土地是可以被其他土地无代价地“带掉”的。原创 2015-12-10 20:46:27 · 486 阅读 · 0 评论 -
BZOJ 1415 - 利用定义计算期望 + DP
本题是我第一道A掉的NOI题~ 啪啪啪。。参考了tky的论文,他的题解很详尽易懂,下面对这个经典题目的经典解法作个推导和总结。第一个拦路虎是如何求出鼠和猫的位置为(a,b)时猫的下一步行动。我们设p[a][b]为猫位于a,鼠位于b时猫下一步走到的节点。由于这个图没有边权,所以这个p是可以通过n次BFS预处理出来的(这个BFS的细节需要特别注意,详见代码)。然后我们考虑枚举所有情况来计算原创 2015-12-23 00:33:54 · 609 阅读 · 0 评论 -
BZOJ 3875 - SPFA处理带环的DP
本题的DP思路很好想:设f[i]f[i]为第ii个怪兽被消灭所需要的最小代价,那么,f[i]=min{spl[i],ori[i]+∑j∈App[i]f[j]}f[i]=min\{spl[i], ori[i]+\sum_{j∈App[i]}{f[j]}\}然而,由于f[j]f[j]有可能也要依赖f[i]f[i],所以这个DP会带环。啊,那该怎么办呢?遇到这类问题,我们常常用SPFA来处理。怎么处理呢原创 2016-01-06 22:20:30 · 797 阅读 · 0 评论 -
白书动态规划例题和习题简解
Pre言:本文的题解原题均来源于白书,题号:UVa 10859, 11825, 11584, 10534, 11552, 11404, 11795, 10564.LA 3983, 4794, 4256, 4731, 4727, 2038, 4394, 4015.一直觉得自己的基础DP不是很扎实,所以就花了一节晚自习+半个上午的时间阅读和解决了上述大部分题目,少数几道习题查了题解之后原创 2015-12-21 20:20:05 · 459 阅读 · 0 评论 -
BZOJ 1030 - AC自动机 + DP
1009那题仍然记忆犹新…… 首先说一下1009的拓展:如果有多个串,则需要建立AC自动机,状态也需要改成:设f[i][j]f[i][j]为考虑到长度为ii的字符串,匹配到AC自动机的jj号节点的方案数,同样地道理构造出矩阵即可,只不过这里f[i][j]f[i][j]为0的条件变为j号节点是单词节点。 然后看这道题,它的要求是相反的:给定一堆字符串,统计长度为m的至少包含一个给定字符串的文本串的长原创 2016-01-05 19:41:05 · 276 阅读 · 0 评论 -
BZOJ 4352 预处理 + DP
题目链接 : http://www.lydsy.com/JudgeOnline/problem.php?id=4352一道SB题。。先把所有积木的长度从小到大排序。设前i块积木的摆放方案为f[i]。先考虑第i块摆在最下面的情况。显然合法,且方案数为f[i-1]。然后对于前i-1块的每一种摆放方案,都可以把第i块摆在s[i]块之上,其中s[i]为可以被第i块摆在上面的积木块数,可以O(n原创 2015-12-10 21:17:28 · 1063 阅读 · 0 评论 -
BZOJ 1009 KMP思想 + DP + 矩阵快速幂
第一次用MarkDown和LaTex,写得有点丑……本题的坑爹历程给了我一个血的教训:没有真正搞清楚做法之前,不要瞎BB地写题解。不然会造成深陷坑中的严重后果。题意简述:给定一个字符串s,求出长度为n的不含字串s的字符串t的数量。这道题是一个非常经典的模型,DP之: 设 f[i][j]\ f[i][j]为前i个t字符,匹配到s的第 j\ j位(强制选 i\ i)的方案数,则有ans=Σ( f[n]原创 2016-01-03 23:05:30 · 298 阅读 · 0 评论 -
递推专题 - 两种状态互推问题:经典问题 打砖块 + NOIP2015 Day2 T2
例1:打砖块这道题的一个非常重要的细节是:只要子弹打光,就必须结束,无论是否还有可以打到的有奖励子弹的砖块。也就是说,有奖励子弹的砖块不等价于不耗费子弹就能获得分数。就是因为这个细节,我们需要双重递推。设f[i][j]表示第i列打j下能获得的分数,g[i][j]表示第i列打j下且第j下不能接着打有奖励子弹的砖块能获得的分数。这个是可以在O(mk)时间内预处理出来的。然后进行DP原创 2015-12-11 23:09:22 · 810 阅读 · 0 评论 -
BZOJ 1003 - 最短路 + DP
从这篇开始换字体。。数据范围很小。。直接暴力DP之即可。。感觉跟之前做的1597的DP很像,都是基于连续区间的DP,应该也可以用斜率优化。。还感觉跟某次CodeVS模拟赛的题的一道变态题(多面体原谅我。。)很像。。只不过那道题最后是二分图匹配。。题解详见代码注释。。我只想吐槽。。窝一遇到什么n m d k p都出来的题,就很容易打错变量名(又因为这WA了三四次!。。这回我一开始就写原创 2015-12-29 22:10:32 · 334 阅读 · 0 评论 -
BZOJ 1002 - 奇妙的题目 + 高精度
这道题有很多奇妙的方法可以搞。。最科学的当然是基尔霍夫矩阵(按照传统,“我也不知道是什么东西”),详见VFK教主的博客;还有乱七八糟的找规律,网上遍地都是。。我就把这题当作高精度练习题了。。原创 2015-12-29 00:10:35 · 470 阅读 · 0 评论 -
BZOJ 1264 动态规划 + 树状数组
“很难想的一道题不过不难写”—— Po姐 这道题窝的思考过程十分坎坷。 首先想着纯DP,类似于NOIP Day2T2的方法搞。 设f[i][j]为强制将A[i]与B串中第j个相同字符匹配的LCS,s[i][j]为考虑到A[i]与B串中第j个相同字符匹配(且强制不允许选这个字符之后)的LCS。 从这个状态设计就可以看得原创 2015-12-14 19:22:11 · 385 阅读 · 0 评论 -
BZOJ 1010 - 斜率优化
比较裸的DP+斜率优化啦…… 让窝又想到了BZOJ上A的第一道有意义的题1597…… 作为第27个A的题也让我颇有感触…… 设前ii个玩具放置到jj个盒子里所需的最小费用为f[i][j]f[i][j]。由于连续的玩具必须放到一个容器里,所以我们有:f[i][j]=f[k][j−1]+cost[k+1][i]f[i][j]=f[k][j-1]+cost[k+1][i]其中k为我们枚举的上一个容器的末原创 2016-01-07 23:14:10 · 461 阅读 · 0 评论