07 2017 档案

摘要:KMP这个算法原理的学习已经搁置了一年了,现在下定决心搞懂它。因为比较难,所以特地开辟几篇博客来,以后绝对不能只套板子,要深刻理解原理。 参考链接:http://blog.csdn.net/yutianzuijin/article/details/11954939/ 首先,我们的目标是在O串中寻找f 阅读全文
posted @ 2017-07-31 21:41 ACMsong 阅读(229) 评论(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 阅读(2386) 评论(1) 推荐(0)
摘要:题目链接:http://acm.uestc.edu.cn/#/problem/show/1344 区间加等差数列本质上就是区间修改区间查询,本来想用线段树做,结果这个题就是卡空间和时间……不得已学了区间修改区间查询的树状数组。 阅读全文
posted @ 2017-07-23 20:15 ACMsong 阅读(872) 评论(0) 推荐(1)
摘要:题目链接:http://acm.fzu.edu.cn/problem.php?pid=2282 编号1~n的置换,不动点个数大于等于k的方案数。 参考百度百科错排公式,可以知道长度为n,每个数都不在自己位置的方案数。然后枚举长度即可。 考虑对立面(即小于k个在自己位置的)可以优化空间。 阅读全文
posted @ 2017-07-23 15:29 ACMsong 阅读(418) 评论(0) 推荐(0)
摘要:首先判断是否相交,就是枚举3*3对边的相交关系。 如果不相交,判断包含还是相离,就是判断点在三角形内还是三角形外。两边各判断一次。 阅读全文
posted @ 2017-07-23 14:31 ACMsong 阅读(1635) 评论(4) 推荐(0)
摘要:题目链接:https://vjudge.net/contest/70655#problem/C 后缀数组的又一神奇应用。不同子串的个数,实际上就是所有后缀的不同前缀的个数。 考虑所有的后缀按照rank排好了,我们现在已知height,也就是相邻的两个的最长公共前缀是多少。那么不同的子串个数怎么统计呢 阅读全文
posted @ 2017-07-23 00:10 ACMsong 阅读(1000) 评论(0) 推荐(0)
摘要:题目链接:http://poj.org/problem?id=3261 这个是可以交叉的重复串,所以用height就可以了,但是题目说让重复k次以上,也就是直接做一个k-1长度的滑窗最小值,从这些最小值里取最大即可。 这里其实为了节省空间可以先给数字离散化一下,这样就只有20000了,不过不离散化空 阅读全文
posted @ 2017-07-22 23:45 ACMsong 阅读(262) 评论(0) 推荐(0)
摘要:题目链接:http://poj.org/problem?id=1743 首先,musical theme只与前后位置的增减关系有关,而与绝对的数值无关,因此想到做一次差分。 然后对于差分后的数组,找到最长的出现两次(或两次以上)的一个子串即可。这个如果说两个子串可以交叉的话就好做了,直接取heigh 阅读全文
posted @ 2017-07-22 21:31 ACMsong 阅读(245) 评论(0) 推荐(0)
摘要:题目链接:https://vjudge.net/contest/171650#problem/I 直接用set+dp水过去了。。。 阅读全文
posted @ 2017-07-20 20:14 ACMsong 阅读(244) 评论(0) 推荐(0)
摘要:题目链接:https://vjudge.net/problem/CodeChef-FNCS 在一个地方卡了一晚上,就是我本来以为用根号n分组,就会分成根号n个。事实上并不是。。。。因为用的是根号n下取整分组,得到的组数要用n/floor(sqrt(n))具体计算。 另外还有各种奇怪的bug……包括u 阅读全文
posted @ 2017-07-20 00:23 ACMsong 阅读(383) 评论(0) 推荐(0)
摘要:题目链接:https://vjudge.net/problem/38405 阅读全文
posted @ 2017-07-19 18:38 ACMsong 阅读(210) 评论(0) 推荐(0)
摘要:感觉数位dp的套路基本掌握了,一些细节的处理要注意。比如这次输入输出都要用long long的问题,因为这个wa了好几次。还有全是0算重的情况,0特判一下就可以了。 阅读全文
posted @ 2017-07-19 17:48 ACMsong 阅读(131) 评论(0) 推荐(0)
摘要:通过这个题对于数位dp中前导0的处理有了新的认识。 题目链接:http://poj.org/problem?id=3252 阅读全文
posted @ 2017-07-19 01:28 ACMsong 阅读(718) 评论(0) 推荐(0)
摘要:通过这个题目更加深入了解到了数位dp在记忆化搜索的过程中就是实现了没有限制条件的n位数的状态复用。 阅读全文
posted @ 2017-07-18 21:13 ACMsong 阅读(200) 评论(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 阅读(167) 评论(0) 推荐(0)
摘要:题目链接:http://acm.fzu.edu.cn/problem.php?pid=2271 题目中说每条边的边权都是[1,10]之间的整数,这个条件非常关键!以后一定要好好读题啊…… 做10次循环,第i次循环加边权为i的边,如果这条边小于当前两点间最短路,就加边,更新两点距离;否则就不要这个边。 阅读全文
posted @ 2017-07-18 19:05 ACMsong 阅读(327) 评论(0) 推荐(0)
摘要:Dilworth定理:偏序集能划分成的最少的全序集的个数与最大反链的元素个数相等。 证明:http://www.cnblogs.com/itlqs/p/6636222.html 题目让求的是最大反链的长度,因此可以转化为最少能划分成的链的个数。这个问题可以用二分图的最大匹配做。 建立一个二分图,两边 阅读全文
posted @ 2017-07-18 09:59 ACMsong 阅读(591) 评论(0) 推荐(0)
摘要:题目链接:http://codeforces.com/gym/101341/problem/I 随机真是一个神奇的方法。原本矩阵乘法是n^3的复杂度,但是这个题是让判断两个矩阵是否相等,只需要在两个矩阵分别左乘一个1*n的矩阵,右乘一个n*1的矩阵,这样两个矩阵就被压缩成了一个数,类似于特征值。只需 阅读全文
posted @ 2017-07-17 17:10 ACMsong 阅读(903) 评论(0) 推荐(1)
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2298 <!--[endif]--><!--[endif]--> 阅读全文
posted @ 2017-07-17 11:40 ACMsong 阅读(225) 评论(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 阅读(226) 评论(0) 推荐(0)
摘要:新的博客注册成功!未来的两年里,这个博客是我学习ACM的专属博客。加油! 阅读全文
posted @ 2017-07-16 21:41 ACMsong 阅读(140) 评论(0) 推荐(0)