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