A

简要题意

有多少种从 {1,2,,n}\{1, 2, \dots, n\} 当中选取数字的方法,使得对于选出的任意两个奇偶性相同的元素 a,ba, ba+b2\frac{a + b}{2} 也被选出。

有多测。

1<T105,1n1061 \lt T \le 10^5, 1 \le n \le 10^6

做法

假设选出来的是 a1<a2<<aka_1 \lt a_2 \lt \dots \lt a_k。对于相邻两项 ai,ai+1a_i, a_{i + 1},如果他们奇偶性相同,则 ai+ai+12\frac{a_i + a_{i + 1}}{2} 也应被选出。所以 aia_iai+1a_{i + 1} 的差为奇数。考虑相隔一项的 ai,ai+2a_i, a_{i + 2},他们的差必定为偶数,所以 ai+ai+22\frac{a_i + a_{i + 2}}{2} 需被选出,必须为 ai+1a_{i + 1}。因此,选出来的必定为公差为奇数的等差数列。

考虑公差为 dd 的方案数。

$$\sum_{l = 1}^{\lfloor\frac{n - 1}{d}\rfloor}n - d(l - 1) = n(\lfloor\frac{n - 1}{d}\rfloor) - d \times \frac{1}{2}(\lfloor\frac{n - 1}{d}\rfloor - 1)\lfloor\frac{n - 1}{d}\rfloor $$

那么,最终的答案就是

$$\begin{align*} &\sum_{d = 1, 2 \not| d}^n n(\lfloor\frac{n - 1}{d}\rfloor) - d \times \frac{1}{2}(\lfloor\frac{n - 1}{d}\rfloor - 1)\lfloor\frac{n - 1}{d}\rfloor\\ =&\sum_{d = 1}^n n(\lfloor\frac{n - 1}{d}\rfloor) - d \times \frac{1}{2}(\lfloor\frac{n - 1}{d}\rfloor - 1)\lfloor\frac{n - 1}{d}\rfloor\\ &-\sum_{d = 1}^{\lfloor\frac{n}{2}\rfloor}n(\lfloor\frac{\lfloor\frac{n - 1}{2}\rfloor}{d}\rfloor) - d (\lfloor\frac{\lfloor\frac{n - 1}{2}\rfloor}{d}\rfloor - 1)\lfloor\frac{\lfloor\frac{n - 1}{2}\rfloor}{d}\rfloor\\ =&\sum_{d = 1}^{n - 1} n(\lfloor\frac{n - 1}{d}\rfloor) - d \times \frac{1}{2}(\lfloor\frac{n - 1}{d}\rfloor - 1)\lfloor\frac{n - 1}{d}\rfloor\\ &-\sum_{d = 1}^{\lfloor\frac{n - 1}{2}\rfloor}n(\lfloor\frac{\lfloor\frac{n - 1}{2}\rfloor}{d}\rfloor) - d (\lfloor\frac{\lfloor\frac{n - 1}{2}\rfloor}{d}\rfloor - 1)\lfloor\frac{\lfloor\frac{n - 1}{2}\rfloor}{d}\rfloor \end{align*} $$

可观察得到,d=1nnd\sum_{d=1}^n\lfloor\frac{n}{d}\rfloor 可以根据 nd\lfloor\frac{n}{d}\rfloor 的值预处理。时间复杂度 O(n+T)O(n + T)

我们令 fn=d=1nndf_n = \sum_{d = 1}^n\lfloor\frac{n}{d}\rfloor,则有以下递推式:fn=fn1+r(n)f_n = f_{n - 1} + r(n),其中 rr 表示因子个数。线性筛即可。

B

简要题意

给定一个字符串 TT,问 TT 有多少个子串可以写为 AABAAABA 的形式。

T105|T| \le 10^5

做法(官解)

考虑 AA 作为 TT 的所有后缀,则所有以 AAAA 为前缀的后缀按字典序排序之后是连续的。

二维数点。

C

简要题意

给你 nn 个分数 aibi\frac{a_i}{b_i},问:最少多少进制下,这些分数写成小数形式均为有限小数?

1n10,1ai,bi1001 \le n \le 10, 1 \le a_i, b_i \le 100

做法

令答案为 pp。在 pp 进制下有限等价于该分数可描述为 xpk\frac{x}{p^k}。因此,bi(ai,bi)pk\frac{b_i}{(a_i, b_i)} | p^k。约分后取所有质因子乘积即可。

答案很大,要 __int128

D

简要题意

给你一个有向图,问至少删多少条边让它变成 DAG。

1n22,1m5004621 \le n \le 22, 1 \le m \le \sout{500}462

做法

本质求最大生成 DAG。

考虑状压。令 dpSdp_S 表示只保留 SS 点的最大边数。因为 DAG 中至少有一个点没入边,所以可以转移:$dp_S = \max_{i \in S}\{dp_{S \setminus \{i\}} + |v_i \cap (S \setminus \{i\})|\}$。viv_i 表示 ii 的出边集。

E

签到题,跳过。

F

签到题,跳过。

G

暴力题,跳过。

H

简要题意

给你一个序列 a1,a2,,ana_1, a_2, \dots, a_n,每次你可以选一个子区间 [l,r][l, r],把 alra_{l \dots r} 替换为他们的中位数。问你能否把所有数变成 kk

对于长度为 nn 的序列 aa,它的中位数为其中第 n+12\lfloor\frac{n + 1}{2}\rfloor 小的数。

有多测。

1n1051 \le \sum n \le 10^5

做法

如果 kk 不在 aa 中出现,显然不行。

否则,只要我们能让 aa 中出现连续两个 k\ge k 的数就行了。

我们把 <k\lt k 的换成 00k\ge k 的换成 11。如果不存在,则两个 11 之间至少有一个 00。如果之间只有一个零,选取这三个数进行操作即可。

如果所有相邻的 11 之间都有多个 00,则不行。

I

原题,ABC315F,去年集训的,徐老师讲过。

J

简要题意

n×mn \times m 的棋盘上最多放多少个互不攻击的马。

1n,m1091 \le n, m \le 10^9

做法

nmn \le m

n=1n = 1 时,全放,答案为 mm

n3n \ge 3 时,棋盘黑白染色后有大小为 nm2\lfloor\frac{nm}{2}\rfloor 的完美匹配,所以答案为 nm2\lceil \frac{nm}{2}\rceil

n=2n = 2 时,考虑一下布局:

$$\begin{array}{c|c|c|c|c|c|c | c} \hline & K & K & & & K & K & \dots \\ \hline & K & K & & & K & K & \dots \\ \hline \end{array} $$

mmod4m \bmod 4 分类讨论即可。