Link
A. Cherry
给一个序列,求所有大小大于等于 2 的区间 min 乘 max 的最大值。
考虑增量构造。假设我们已经求得一个区间的 min 和 max,现在在其右端扩展一个数。只可能 min 变小,或者 max 变大。讨论这两种情况,min 变小肯定不优;而如果是 max 变大,考虑删除该区间左边的一些数,max 和 min 均不会变小。那么这样就得到了一个很强的结论,即最终产生的答案的区间的长度一定是 2。所以对所有 (a_i imes a_{i+1}) 取 max 即可。
B. Cobb
给定序列 (a (a_ileq n)) 和 常数 (kleq 100),求 (f(i,j)=i imes j-kcdot (a_i|a_j)) 的最大值,其中 (i eq j)。
这道题的突破口在于值域,(kleq 100) 和 (a_i|a_j leq 2n) 都很小,但是 (i imes jleq n^2) 很大,所以有一个猜想,即是说答案在 (i) 和 (j) 比较大的时候产生。先考虑考虑一个可能的答案 (f(n,n-1)geq n(n-1)-k imes 2n=n^2-2kn-n),而任何比这个值小的都不可能成为答案,又有 (f(i,j)leq i imes j)(假定 (i<j)),要使得其成为答案,就必须 (ij geq n^2-2kn-n),那么 (i) 的范围就是 ([frac{n^2-2kn-n}{j},n]),容易发现必须 (i) 和 (j) 都大于等于 (n-2k) 时,这个区间才不是空集,那么我们只需要枚举 (O(k^2)) 次即可。
C. Mikasa
给出 (n,mleq 10^9),求数列 (0 oplus n),(1 oplus n),(dots),(moplus n) 的 mex 。其中 (oplus) 表示异或。
实质上是找出最小的 (k) ,使得 (k oplus ngeq m+1),考虑从高到低按位计算,记 (n) 当前位是 (x),(m+1) 的是 (y)。
- 如果 (x=y) 跳过即可。
- 如果 (x=1,y=0) 直接结束,因为已经大于等于 (m+1) 了。
- 如果 (x=0,y=1) 则把答案异或上当前位。
D. Diane
构造一个长为 (n) 的串,使得每种子串均出现奇数次。
场上想复杂了。考虑一个长为 (k) 的串 (aaadots a),(k) 是奇数,那么 (a)、(aa)、(dots) 的奇偶性分别是奇、偶、(dots)。(k) 是偶数时类似。考虑两个长为 (k) 和 (k-1) 的这样的串,中间用一个 (b) 连接,由于 奇+偶=奇,最终所有串都出现奇数次。这里取 (k=lfloor frac{n}{2} floor) 即是答案。注意 (n) 是奇数时,应用 (bc) 连接。
E. You
给定一棵树。每次删去一个点,这个点权值 (a_u) 定为与它相连且未删去的点的个数。对每个 (kin[1,n]) ,求 (gcd(a_1,a_2,dots,a_n)=k) 的序列个数,方案不同当且仅当 ({a_n}) 不同。
首先要把删点转换成给边定向,也就是说删去一个点就把与它相连的边指向它,权值就变成了入度。有 (n-1) 条边,就共有 (2^{n-1}) 种序列。先考虑 (kgeq 2) 的答案。由于 (k geq 2),所以对于叶子结点的边,只能指向父亲。那么删去这些叶子结点后,新的叶子结点的入度就一定不为 0 了,当前入度记为 (a_u),儿子都已经定了,只有指向父亲的这条边还可能有贡献,最终的入度只可能是 (a_u) 或者 (a_u+1),又由于 (kgeq 2) 所以 (a_u otequiv a_u+1 pmod k),只可能其中一个是 (k) 的倍数,要使得 (k|a_u) 那么方案是唯一的。所以对所有 (kgeq 2),答案要么是 0 要么是 1。由于每条边只会有 1 的贡献,所以最终所有点的入度和一定是 n-1,又要是 (gcd=k),那么每个 (a_u) 都是 (k) 的倍数,那么一定有 (k|n-1)。所以只需要暴力判断 (n-1) 的因子即可。这样就可以求出所有 (kgeq 2) 的答案,那么 (k=1) 的答案就是 (2^{n-1}) 减去这些的和。