上一页 1 ··· 54 55 56 57 58 59 60 61 62 ··· 65 下一页
摘要: 要求最大值最小容易想到二分答案。首先对每个点求出子树中与其最远的距离是多少,二分答案后就可以标记上一些必须在所选择路径中的点,并且这些点是不应存在祖先关系的。那么如果剩下的点数量>=3,显然该答案不可行;=0,显然可行;=1,由该点沿其到根的路径往上爬,并计算最远距离判断是否合法;=2,求出两点lc 阅读全文
posted @ 2018-08-27 22:01 Gloid 阅读(180) 评论(0) 推荐(0) 编辑
摘要: 令f[i]表示i子树内最少染色次数,加上012状态分别表示该子树内叶节点已均被满足、存在黑色叶节点未被满足、存在白色叶节点未被满足,考虑i节点涂色情况即可转移。事实上贪心也可以。 阅读全文
posted @ 2018-08-27 18:51 Gloid 阅读(134) 评论(0) 推荐(0) 编辑
摘要: 不妨看做是先用k个指针指向被选择的前k个元素,然后每次将选中当前第一个元素的指针移到最后,并且需要满足位置变化量>=m。显然这样可以构造出所有的合法方案。那么可以以此建立费用流模型,以一条流量k费用0的链将所有点串起来,再由每个位置向该位置+m连流量1费用为该元素权值的边,最大费用流即可。 阅读全文
posted @ 2018-08-27 13:09 Gloid 阅读(258) 评论(0) 推荐(0) 编辑
摘要: 求出最短路后找出可能在最短路上的边,显然割完边后我们需要让图中这样的边无法构成1到n的路径,最小割即可,非常板子。 阅读全文
posted @ 2018-08-26 22:49 Gloid 阅读(226) 评论(0) 推荐(0) 编辑
摘要: 求x2+y2=r2的整数解个数,显然要化化式子。考虑求正整数解。 y2=r2-x2→y2=(r-x)(r+x)→(r-x)(r+x)为完全平方数→(r-x)(r+x)/d2为完全平方数,d=gcd(r-x,r+x)→(r-x)/d·(r+x)/d为完全平方数,gcd((r-x)/d,(r+x)/d) 阅读全文
posted @ 2018-08-26 21:34 Gloid 阅读(226) 评论(0) 推荐(0) 编辑
摘要: 显然可以用总方案数减掉三点共线的情况。对于三点共线,一个暴力的做法是枚举起点终点,其间整点数量即为横纵坐标差的gcd-1。这样显然会T,注意到起点终点所形成的线段在哪个位置是没有区别的,于是枚举线段算出这样的线段条数就可以了。 似乎可以莫比乌斯反演一波。 阅读全文
posted @ 2018-08-26 11:43 Gloid 阅读(142) 评论(0) 推荐(0) 编辑
摘要: 首先将完全相同的边的权值累加。考虑这样一种trick:给边确定一个方向,由度数小的连向度数大的,若度数相同则由编号小的连向编号大的。这样显然会得到一个DAG。那么原图的三元环中就一定有且仅有一个点有两条入边了。并且每个点的出度不会超过√m,因为假设一个点连出了x条边那么其所连向的每个点也至少会有x条 阅读全文
posted @ 2018-08-24 21:20 Gloid 阅读(290) 评论(0) 推荐(0) 编辑
摘要: 由于本质不同的回文子串数量是O(n)的,考虑在对于每个回文子串在第一次找到它时对其暴力统计。可以发现manacher时若右端点移动则找到了一个新回文串。注意这样会漏掉串长为1的情况,特判一下。 现在问题变为统计一个子串的出现次数。可以用SA,二分乱搞一下即可。这里使用SAM。以parent树上表示该 阅读全文
posted @ 2018-08-24 20:06 Gloid 阅读(221) 评论(0) 推荐(0) 编辑
摘要: 建出parent树统计即可。开始memcpy处写的是sizeof(son[y]),然后就T掉了……还是少用这种东西吧。 同时也有SA做法。答案子串一定是名次数组中相邻两个串的lcp。单调栈统计其是几个后缀的前缀即可。 阅读全文
posted @ 2018-08-23 14:22 Gloid 阅读(222) 评论(0) 推荐(1) 编辑
摘要: 参考:https://blog.csdn.net/doyouseeman/article/details/52245413 https://wenku.baidu.com/view/90f22eec551810a6f4248606.html APIO2018课件《从DFA到后缀自动机》张云帆 随便写 阅读全文
posted @ 2018-08-22 23:05 Gloid 阅读(305) 评论(0) 推荐(0) 编辑
上一页 1 ··· 54 55 56 57 58 59 60 61 62 ··· 65 下一页