A
简单题不讲了。
B
直接搜就行了。
C
直接模拟即可,要注意轮盘是循环的。
D
向右走次数为奇数就是黑色,偶数就是红色。
向右走次数等价于这个点编号(从上往下,从左往右)的二进制表示的 popcount 减一。
E
我们枚举 n,m 是哪两个数,然后【剩下的数的本质不同排列数乘上 n 的出现次数乘上 m 的出现次数】之和就是答案。
怎么算本质不同排列数?我们假设剩下的数序列是 ai,其中 x 出现了 cntx 次,那么这些数的本质不同排列数就是
(∑xcntx)!∏xcntx!
预处理一下阶乘直接算直接计算即可。
F
考虑枚举左端点 l,预处理最远右端点 fl 使得 [l,fl] 是连续非递减子串。
不难注意到右端点在 l∼ffl+1 之间都是合法的。
G
考虑算踩到的概率是多少。
对于每一个圆,我们不难处理出这条射线在与这个圆相交时,与 x 轴正半轴的夹角范围。
对于每一个圆的夹角范围我们做区间合并,然后取这些区间集合的补就是不会碰到的夹角范围,直接算概率即可。
H
这是一颗基环树,我们把它的环找出来,。
答案只有两种情况:
- 走了一些环上的边。
- 仅子树内。
仅子树内相当于带点权的直径,不难。
我们来看走了换上这种情况怎么办。我们称环上的点为 a1∼am,环上的点是不是标记点的前缀和数组是 s1∼sm,我们先处理出每个环上的点往子树内走最多能扫到几个标记点 f1∼fm。
分讨,顺时针走是 sj−si−1+fi+fj(i<j),逆时针走是 n−(si−sj−1)+fi+fj(i>j)。
两种都可以贪心的求出。
总结:简单场。