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:每次找到当前的最小值,按其作为断电左右分治即可。

posted @ 2017-07-28 13:54  lawyer'  阅读(175)  评论(0编辑  收藏  举报