摘要: 模板。注意若x=y不一定是废话,x=0或x=0表示x必须为0。以及数组开2n。 阅读全文
posted @ 2018-08-03 10:45 Gloid 阅读(179) 评论(0) 推荐(0) 编辑
摘要: 开店简化版。 阅读全文
posted @ 2018-08-03 10:19 Gloid 阅读(194) 评论(0) 推荐(0) 编辑
摘要: 考虑这样一个问题:一棵树初始全是白点,有两种操作:把一个点染黑;询问某点到所有黑点的距离之和。 注意到树上两点x和y的距离为depth[x]+depth[y]-depth[lca(x,y)]*2。要求出上面的东西,depth[x]+depth[y]可以很简单的算出来,关键在于depth[lca(x, 阅读全文
posted @ 2018-08-03 02:58 Gloid 阅读(243) 评论(0) 推荐(0) 编辑
摘要: 要统计所有路径的信息,那我们考虑点分治,每次算经过分治中心的路径的贡献。然而路径的颜色数量实在是不好统计,既然只需要求从每个点出发的所有路径的颜色数量之和,那换一种思路,改为求从每个点出发包含某种颜色的路径数量之和。这两者显然是等价的。 考虑在点分治过程中怎么算这个东西。首先算出每种颜色被多少条由根 阅读全文
posted @ 2018-08-02 18:30 Gloid 阅读(279) 评论(0) 推荐(0) 编辑
摘要: 先看t=1的情况。显然得求出SA(因为我不会SAM)。我们一位位地确定答案。设填到了第len位,二分这一位填什么之后,在已经确定的答案所在的范围(SA上的某段区间)内二分,找到最后一个小于当前串的后缀,那么从区间左端点到该位置的这些后缀的所有前缀都要比二分出的答案小,判一下是否合法。确定了这一位填什 阅读全文
posted @ 2018-08-02 13:16 Gloid 阅读(237) 评论(0) 推荐(0) 编辑
摘要: 显然最后每个小朋友所拥有的糖果数就是糖果数总和的平均数。设该平均数为t。 环的问题一般断成链,但这个题似乎没有什么很好的办法在枚举断点的时候快速算出答案(我甚至不知道会不会有断点) 于是我们假装把他断开了。假装现在我们已经知道了1号小朋友要给n号小朋友x颗糖果(可以为负)。那么,2给1,3给2,4给 阅读全文
posted @ 2018-08-01 21:44 Gloid 阅读(178) 评论(0) 推荐(0) 编辑
摘要: 每个点出度都为1,可以发现这张图其实是个环套树森林,树中儿子指向父亲,环上边同向。 首先自环肯定是没救的,先抬出去。 要使死亡人数最多的话,显然若一个点入度为0其不会死亡,而一个孤立的环至少会留下一个点。对于环套树,若某个点有子树,可以以瞄准它的点为起点,每个点都被在环上瞄准他的点所击中。这样就剩下 阅读全文
posted @ 2018-08-01 19:56 Gloid 阅读(272) 评论(0) 推荐(0) 编辑
摘要: 首先把每32位压成一个unsigned int(当然只要压起来能过就行)。如果不考虑进/退位的话,每次只要将加/减上去的数拆成两部分直接单点修改就好了。那么考虑如何维护进/退位。可以发现进位的过程其实就是将一段连续的inf改为0,并把之后一位+1,也就是说只要找到某一位之后第一个不是inf的位就好了 阅读全文
posted @ 2018-08-01 13:31 Gloid 阅读(123) 评论(0) 推荐(0) 编辑
摘要: 一个字符串本质不同的子串数量显然是总子串数减去所有height值。如果一个个往里加字符的话,每次都会改动所有后缀完全没法做。但发现如果从后往前加的话,每次只会添加一个后缀。于是我们把字符串倒过来,每次往里添加后缀并维护答案。可以用一棵平衡树,每次插入时查询这个名次的前驱后继以更新。 SA板子敲得磕磕 阅读全文
posted @ 2018-07-31 10:18 Gloid 阅读(225) 评论(0) 推荐(0) 编辑
摘要: 能看懂题就能想到正解。维护所有长度不超过k的数字串的哈希值即可,用链表维护一下蚯蚓间连接情况。由于这样的数字串至多只有nk个,计算哈希值的总复杂度为O(nk),而分裂的复杂度为O(ck^2),询问复杂度为O(Σ|s|)。于是总复杂度为O(nk+ck^2+Σ|s|)。 手写哈希注意插入元素时考虑清楚, 阅读全文
posted @ 2018-07-30 21:55 Gloid 阅读(205) 评论(0) 推荐(0) 编辑