随笔分类 -  动态规划

摘要:一般对于两个字符串,长度分别为n和m,其时间复杂度为O(nm)。 但是针对小字符集的情况,可以把复杂度降低到O(n^2+km),其中n为两个字符串较短的长度。这种方法对于两个字符串长度相差很大的情况比O(nm)要优化很多。 就假设所有的字符都是小写字母,这样就符合小字符集的前提了。设较短的字符串为S 阅读全文
posted @ 2017-12-31 11:36 ACMsong 阅读(299) 评论(0) 推荐(0)
摘要:问题描述:给一个数组a1,a2,...,an.求这个数组的最大连续子段和。(非空子段) 即,定义Sij=ai+...+aj,则题目要求的是 max{Sij}(1<=i<=j<=n) N^3枚举和优化之后的N^2枚举就不说了,还有NlogN的二分算法也不提,想了解的可以看我的另一篇博客:http:// 阅读全文
posted @ 2017-12-31 11:34 ACMsong 阅读(516) 评论(0) 推荐(0)
摘要:今天花了很长时间终于弄懂了这个算法……毕竟找一个好的讲解真的太难了,所以励志我要自己写一个好的讲解QAQ 这篇文章是在懂了这个问题n^2解决方案的基础上学习。 解决的问题:给定一个序列,求最长不下降子序列的长度(nlogn的算法没法求出具体的序列是什么) 定义:a[1..n]为原始序列,d[k]表示 阅读全文
posted @ 2017-12-31 11:33 ACMsong 阅读(769) 评论(0) 推荐(1)
摘要:题目链接:http://hihocoder.com/problemset/problem/1050 两种方法: 1. 两遍dfs,第一次随便找一个根,找到距离这个根最远的点,这个点必然是最长链的一端。第二次就用这个端点做一遍dfs,最远的点就是另一端。 2. 树形dp。记dp[i][0/1]表示以i 阅读全文
posted @ 2017-10-14 12:59 ACMsong 阅读(272) 评论(0) 推荐(0)
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1398 看到网上的题解都是说母函数……为什么我觉得就是一个dp就好了,dp[i][j]表示只用前i种硬币,组成价值为j的价格的方案数,转移枚举第i种硬币用多少个就好了。 阅读全文
posted @ 2017-09-28 09:31 ACMsong 阅读(171) 评论(0) 推荐(0)
摘要:题目链接:http://poj.org/problem?id=1947 看了很多题解都是直接一遍dfs就搞定的方法,但是我实在是没看懂那个转移方程。最后在茫茫博客中终于发现了一个有逻辑的方法,但是复杂度好像要高一些,但是还是把这个题过了。http://www.chongchonggou.com/g_ 阅读全文
posted @ 2017-08-30 16:17 ACMsong 阅读(176) 评论(0) 推荐(0)
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3507 kuangbin大佬的博客讲的非常清楚orzhttp://www.cnblogs.com/kuangbin/archive/2012/08/26/2657650.html 阅读全文
posted @ 2017-08-30 13:05 ACMsong 阅读(156) 评论(0) 推荐(0)
摘要:题目链接:http://poj.org/problem?id=2342 dp[i][0/1]表示以i为根的子树,选或不选根,所能得到的最大rating和。 显然 dp[i][0]=∑max(dp[son][0],dp[son][1]) dp[i][1]=val[i]+∑dp[son][0] 阅读全文
posted @ 2017-08-28 22:57 ACMsong 阅读(118) 评论(0) 推荐(0)
摘要:原以为很好的理解了数位dp,结果遇到一个新的问题还是不会分析,真的是要多积累啊。 解决13的倍数,可以根据当前余数来推,所以把当前余数记为一个状态就可以了。 阅读全文
posted @ 2017-08-01 11:02 ACMsong 阅读(411) 评论(0) 推荐(0)
摘要:题目链接:http://poj.org/problem?id=2533 其实这个题的数据范围n^2都可以过,只是为了练习一下nlogn的写法。 最长上升子序列的nlogn写法有两种,一种是变形的dp,另一种是树状数组。 变形的dp可以参考http://www.cnblogs.com/itlqs/p/ 阅读全文
posted @ 2017-07-24 21:05 ACMsong 阅读(2328) 评论(1) 推荐(0)
摘要:题目链接:https://vjudge.net/contest/171650#problem/I 直接用set+dp水过去了。。。 阅读全文
posted @ 2017-07-20 20:14 ACMsong 阅读(236) 评论(0) 推荐(0)
摘要:题目链接:https://vjudge.net/problem/38405 阅读全文
posted @ 2017-07-19 18:38 ACMsong 阅读(207) 评论(0) 推荐(0)
摘要:感觉数位dp的套路基本掌握了,一些细节的处理要注意。比如这次输入输出都要用long long的问题,因为这个wa了好几次。还有全是0算重的情况,0特判一下就可以了。 阅读全文
posted @ 2017-07-19 17:48 ACMsong 阅读(126) 评论(0) 推荐(0)
摘要:通过这个题对于数位dp中前导0的处理有了新的认识。 题目链接:http://poj.org/problem?id=3252 阅读全文
posted @ 2017-07-19 01:28 ACMsong 阅读(714) 评论(0) 推荐(0)
摘要:通过这个题目更加深入了解到了数位dp在记忆化搜索的过程中就是实现了没有限制条件的n位数的状态复用。 阅读全文
posted @ 2017-07-18 21:13 ACMsong 阅读(197) 评论(0) 推荐(0)
摘要:一个不错的讲解数位dp的博客:http://blog.csdn.net/wust_zzwh/article/details/52100392 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2089 这个题数据范围比较小,所以暴力也可以过,像这样: 但是 阅读全文
posted @ 2017-07-18 20:03 ACMsong 阅读(164) 评论(0) 推荐(0)
摘要:一个不错的讲解:https://github.com/julycoding/The-Art-Of-Programming-By-July/blob/master/ebook/zh/01.05.md 阅读全文
posted @ 2017-07-17 10:20 ACMsong 阅读(223) 评论(0) 推荐(0)