2017 多校1
1001:取log10即可
1002:考虑对于每一个字符维护一下一下每一个位置有几个相应字符,按照26进制进位,然后贪心即可
1003:考虑不同的颜色分开讨论,对于一个颜色将原先的树分成若干块,不经过该颜色的方案数为sum{siz*(siz-1)/2},这样考虑对于
该颜色的点按照深度排序从下向上dfs序维护子树点的个数即可。
1006:f(i) = b(f(a(i))) = j,则f(i) = b(b(f(a(a(i))))) = b^2(f(a^2(i))) = b^L(f(a^L(i))) 当a走循环L走到起点时f(i) = b^L(f(i)),
从而f(i)应该选取b排列上循环长度d|L的一个环重复L/d次后作为 f(i) 对应在a排列上的环,O(nlogn) 类似筛法预处理即可
1007:去log后变成子树加问题,注意将两类边放在一起,在dfs序上记L(x),R(x),M(x),然后根据父节点分类讨论对子树的操作。
1008:可以注意到b数组是一个指数级别的数组,a数组完全随机,考虑b数组反过来nth_element即可。
1011:找规律即可
1012:每次找到当前的最小值,按其作为断电左右分治即可。