贪心,显然蛇形填数最优。注意特判最后要填完。
贪心,最后的 \gcd 一定是个质数,不妨直接枚举,只有 \omega(\sqrt n) 种。
考虑第 i 条边的贡献至少为 \min{\sum {j=1}^i a_j,\sum{j=i+1}^na_j},不难发现充分性显然。
所以记个前缀和扫一遍即可。
随意钦定一起点 s 以及另一点,用 n 次叉积可以求得第二个点 p。
n 次求面积,可得出所有 (s,p,i) 的面积,其中面积最大的点一定为 s 的对立点 g。
而同一边的面积一定是有序的。
再用 n 次询问求出每个点在线段 (s,g) 的哪边。
对于点 v 的修改,假定 v 是树根,如果 r 和 u 在同一个子树内,则 v 不在路径上,不会加 d;否则会加上 d。
随机选择一个点,它被加上 d 的概率是 P=\frac{n-sz(u)}n,因此,某个点的权值期望增加量为 P\times d。
很显然可以差分一下。
查询时加上重链顶的贡献即可。
时间复杂度:O(n\log ^2n)。
如果没有任何限制,答案即为 \prod deg_i!(不同相对顺序)。
限制即为若干条不重叠的路径,故其总长为 O(n),直接暴力爬树。
对于同一个点可能有若干路径于此交汇,每个点单独考虑则有三种情况:
设从该点连出的符合条件的链数为 F_i,则答案即为 \prod F_i!。
不合法的情况有:
时间复杂度:O(n)。