E
Statement
对于一个数组 a ,当且仅当 gcd(ai,ai+1)=gcd(ai,ai+2)=gcd(ai+1,ai+2)=1 时, i 为一个好索引,反之则为坏索引。给定 n≤2×105 ,构造排列 an 使得其中坏索引数量不超过 6。
Solution
将具有相同因子的数构造成 XX_XX_XX_XX... 的形状较优,将偶数与 3 的奇数倍数分别构造成这种形状可以满足题意。
submission
G
Statement
给定两个长度为 n≤2×105 的数组 a 和 b ,两种操作分别为:
- 选择 i 使得 ai:=ai+1 。
- 对于所有的 i 使得 ai:=ai×2 。
求使得 a=b ,最小的操作次数\使得操作次数最小的操作序列数量( 对 106+3 )取模。
Solution
尽量多使用操作 2 显然更优,因此 操作 2 的数量唯一确定。
如果某一个操作 1 之后有 x 个操作 2,相当于给 a 加上 2x 。
因此也可以唯一确定操作 1 的数量。只有若干个操作 2 之间(包括第一个操作 2 和最后一个操作 2 之后),一组操作 1 的顺序可以调换。
根据组合数学原理,对于每一组操作 1,方案数为 ∏(pi!)(∑p)! , 其中 pi 为第 i 个数的操作 1 的数量。
注意代码实现的时候, (∑p)! 可能会超过 mod ,此时答案即为 0 ,因为分子一定含有因子 mod,而分母一定不含有因子 mod,即 ∏(pi!)(∑p)!mod(106+3)=0 。
submission
H
Statement
给定两个整数 n 和 m ( 2≤n≤m≤2⋅105 ),最大化严格单调递增数组 an 的 Σi=2nv(i,ai) 的取值,其中 v(b,x) 为最大的 k 使得 bk∣x。
Solution
考虑 dp,令 dpi,j 为 ai 已确定为 j+i 时最大的 Σv ,这样 dpi,j 可以由任意 dpi,j′(j′<=j) 转移过来,且 Σv 的增加量只与 j 有关而与 j′ 无关,故可以使用滚动数组,并用树状数组维护区间最大值。
submission