其实有原题, "生成树计数" 然鹅这题里面是两道题, 50pts 可以用 "上面那题的做法" 直接过掉,另外 50pts 要推推式子,搞出 O n 的做法才行(毕竟多项式常数之大您是知道的) 虽说这道题里面是没有 a_i 的,也不用分治合并多项式的就是了,所以大致思路看我另一题的题解就好了,这里对于 ...
分类:
其他好文 时间:
2019-05-14 17:42:38
阅读次数:
143
"传送门——Vjudge" 构建出回文树,那么我们需要对于回文树的每一个节点求出它在原串中的出现次数和前$\frac{len}{2}$个字符构成的串 前者可以直接在fail树上传递endpos标记,后者可以倍增。但是后者还有一种复杂度$O(?)$的做法跑得非常快: 对于每一个点维护$half_x$表 ...
分类:
其他好文 时间:
2019-05-02 23:08:29
阅读次数:
148
"嘟嘟嘟vjudge" 我今天解决了一个历史遗留问题! 题意:给一棵树,写一个东西,支持一下两种操作: 1.$x$到$y$的路径上的每一个点的权值加$d$。 2.求$x$到$y$路径上所有点权的gcd。 树上路径操作自然能想到树剖,但问题在于区间加操作不好维护。 因此我们先考虑序列上的操作。 求gc ...
分类:
其他好文 时间:
2019-04-21 10:06:25
阅读次数:
132
Subtree Removal 很显然不可能选择砍掉一对有祖先关系的子树。令$f_i$表示$i$子树的答案,如果$i$不被砍,那就是$a_i + \sum\limits_j f_j$;如果$i$被砍,那就是$-x$。取个$max$就好了。 #include <bits/stdc++.h> using ...
分类:
其他好文 时间:
2019-04-15 19:44:58
阅读次数:
126
"传送门" $Maximum\ Remaining$ 对于两个数$a,b$,如果$a=b$没贡献,所以不妨假设$a define R register define fp(i,a,b) for(R int i=(a),I=(b)+1;iI; i) define go(u) for(int i=hea ...
分类:
其他好文 时间:
2019-04-15 18:06:30
阅读次数:
129
https://www.codechef.com/ICL2019/problems/ICL1906 两个整数,[0,1e5]操作1是让两个数同时减1(只有都大于0的时候才可以用)操作2可以让一个数乘2问让两个数都变成0的最小操作次数 直接贪心。能乘就乘。 1 #include <bits/stdc+ ...
分类:
其他好文 时间:
2019-03-29 23:27:29
阅读次数:
303
退役前的做题记录5.0 出于某种原因新开了一篇。 [CodeChef]Querying on a Grid 对序列建立分治结构,每次处理$(l,mid,r)$时,以$mid$为源点建立最短路树,这样跨越$mid$的点对之间的最短路一定会经过$mid$,因此两点之间的最短路径就可以描述成最短路树上的两 ...
分类:
其他好文 时间:
2019-03-07 22:08:30
阅读次数:
220
【CodeChef】Querying on a Grid(分治,最短路) 题面 "Vjudge" "CodeChef" 题解 考虑分治处理这个问题,每次取一个$mid$,对于$mid$上的三个点构建最短路径树(因为保证了最短路唯一所以是树)。 如果两点之间的最短路径跨越了$mid$,那么必定有$di ...
分类:
其他好文 时间:
2019-03-01 17:14:37
阅读次数:
236
预处理后主席树维护 首先得出最后的答案为 $\sum_{i=l}^{r}{min(right[i],r) i+1}$ step1 那么首要问题就是如何求出$right[i]$ 考虑当i j 1是上升时使区间i j是上升的 即sum[i 1]^sum[j 1] define ll long long ...
分类:
其他好文 时间:
2019-02-24 13:28:20
阅读次数:
175
"bzoj 3514 Codechef MARCH14 GERALD07加强版" 所谓的加强版就是比原题多了个强制在线.原题显然可以莫队随便乱搞一下,就过了. 本题强制在线,我们只能通过预处理的手段,高效回答每次询问. 考虑从前往后依次加入边.如果加入的边是树边,即加入它后图中没有环,那么它会使整张 ...
分类:
其他好文 时间:
2019-02-22 12:29:23
阅读次数:
166