摘要: 题目链接:http://hihocoder.com/problemset/problem/1050 两种方法: 1. 两遍dfs,第一次随便找一个根,找到距离这个根最远的点,这个点必然是最长链的一端。第二次就用这个端点做一遍dfs,最远的点就是另一端。 2. 树形dp。记dp[i][0/1]表示以i 阅读全文
posted @ 2017-10-14 12:59 ACMsong 阅读(259) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://codeforces.com/gym/100431/ 考虑到对于一个串β,能cover它的最短的α必然是它的border的某个前缀,或者是这个β本身。 所谓border,就是next[len(β)],直观含义是除了串本身以外,使得前缀等于后缀的最长的一段前缀。 发现如果bor 阅读全文
posted @ 2017-10-07 11:31 ACMsong 阅读(1165) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4417 把数字离散化,一个查询拆成两个查询,每次查询一个前缀的和。主要问题是这个数组是静态的,如果带修改操作就不能离线了。 阅读全文
posted @ 2017-09-28 17:03 ACMsong 阅读(263) 评论(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 阅读(163) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=3224 bzoj不能用time(0),看到这个博客才知道,我也RE了好几发…… 阅读全文
posted @ 2017-09-27 14:10 ACMsong 阅读(199) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1208 看网上的题解都用的手写数据结构……然而直接用set的lower_bound就水过去了…… 阅读全文
posted @ 2017-09-25 21:44 ACMsong 阅读(199) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2586 在线版本: 在线方法的思路很简单,就是倍增。一遍dfs得到每个节点的父亲,以及每个点的深度。然后用dp得出每个节点向上跳2^k步到达的节点。 那么对于一个查询u,v,不妨设depth[u]>=de 阅读全文
posted @ 2017-09-18 15:55 ACMsong 阅读(175) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2844 又用到线性基+高斯消元的套路题了,因为经过高斯消元以后的线性基有非常好的序关系,所以这种套路还是经常考到的。 求出一个经过高斯消元的基以后,根据基里面的元素个数可以确定值域的数的个数, 阅读全文
posted @ 2017-09-12 15:06 ACMsong 阅读(203) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2115 给定一个带权无向图,要找出从1到n路径权值异或和最大的那一条的路径异或和。 考虑1到n的任意一条路径,都可以表示为1到n的一条路径,加上图上任意的一些环(1所在的那个连通块)。之所以可 阅读全文
posted @ 2017-09-12 14:36 ACMsong 阅读(160) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3949 一开始给做出来的线性基wa了很久,最后加了一步高斯消元就过了。 之所以可以这样做,证明如下。 首先,把线性基做出来肯定是没有问题的,因为线性基的值域跟原来的n个数的值域是一样的。 那么为什么不可以 阅读全文
posted @ 2017-09-12 09:37 ACMsong 阅读(220) 评论(0) 推荐(0) 编辑