摘要: 原以为很好的理解了数位dp,结果遇到一个新的问题还是不会分析,真的是要多积累啊。 解决13的倍数,可以根据当前余数来推,所以把当前余数记为一个状态就可以了。 阅读全文
posted @ 2017-08-01 11:02 ACMsong 阅读(352) 评论(0) 推荐(0) 编辑
摘要: KMP这个算法原理的学习已经搁置了一年了,现在下定决心搞懂它。因为比较难,所以特地开辟几篇博客来,以后绝对不能只套板子,要深刻理解原理。 参考链接:http://blog.csdn.net/yutianzuijin/article/details/11954939/ 首先,我们的目标是在O串中寻找f 阅读全文
posted @ 2017-07-31 21:41 ACMsong 阅读(172) 评论(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 阅读(1657) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://acm.uestc.edu.cn/#/problem/show/1344 区间加等差数列本质上就是区间修改区间查询,本来想用线段树做,结果这个题就是卡空间和时间……不得已学了区间修改区间查询的树状数组。 阅读全文
posted @ 2017-07-23 20:15 ACMsong 阅读(673) 评论(0) 推荐(1) 编辑
摘要: 题目链接:http://acm.fzu.edu.cn/problem.php?pid=2282 编号1~n的置换,不动点个数大于等于k的方案数。 参考百度百科错排公式,可以知道长度为n,每个数都不在自己位置的方案数。然后枚举长度即可。 考虑对立面(即小于k个在自己位置的)可以优化空间。 阅读全文
posted @ 2017-07-23 15:29 ACMsong 阅读(352) 评论(0) 推荐(0) 编辑
摘要: 首先判断是否相交,就是枚举3*3对边的相交关系。 如果不相交,判断包含还是相离,就是判断点在三角形内还是三角形外。两边各判断一次。 阅读全文
posted @ 2017-07-23 14:31 ACMsong 阅读(1397) 评论(4) 推荐(0) 编辑
摘要: 题目链接:https://vjudge.net/contest/70655#problem/C 后缀数组的又一神奇应用。不同子串的个数,实际上就是所有后缀的不同前缀的个数。 考虑所有的后缀按照rank排好了,我们现在已知height,也就是相邻的两个的最长公共前缀是多少。那么不同的子串个数怎么统计呢 阅读全文
posted @ 2017-07-23 00:10 ACMsong 阅读(948) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://poj.org/problem?id=3261 这个是可以交叉的重复串,所以用height就可以了,但是题目说让重复k次以上,也就是直接做一个k-1长度的滑窗最小值,从这些最小值里取最大即可。 这里其实为了节省空间可以先给数字离散化一下,这样就只有20000了,不过不离散化空 阅读全文
posted @ 2017-07-22 23:45 ACMsong 阅读(226) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://poj.org/problem?id=1743 首先,musical theme只与前后位置的增减关系有关,而与绝对的数值无关,因此想到做一次差分。 然后对于差分后的数组,找到最长的出现两次(或两次以上)的一个子串即可。这个如果说两个子串可以交叉的话就好做了,直接取heigh 阅读全文
posted @ 2017-07-22 21:31 ACMsong 阅读(212) 评论(0) 推荐(0) 编辑
摘要: 题目链接:https://vjudge.net/contest/171650#problem/I 直接用set+dp水过去了。。。 阅读全文
posted @ 2017-07-20 20:14 ACMsong 阅读(198) 评论(0) 推荐(0) 编辑