在学校瞎想的。
B
选 y=2xy=2xy=2x 即可。显然 x+y=3x,x#y=(10k+2)xx+y=3x,x\#y=(10^k+2)xx+y=3x,x#y=(10k+2)x,符合条件。
时间复杂度 O(t)O(t)O(t)。
C
显然该游戏只能进行一次,因为 Bob 的最优方案只能是退出游戏。
所以只需要计算 Alice 的最优操作即可。map 应该能做?
时间复杂度 O(∑nlogn)O(\sum n\log n)O(∑nlogn)。
D(正确性未知)
显然问题可转化成选择 ⌊n2⌋\lfloor \frac{n}{2}\rfloor⌊2n ⌋ 个 l+rl+rl+r 和 nmod 2n\mod 2nmod2 个 rrr,拿 ∑r\sum r∑r 减去它的最小值即可。
按 l+rl+rl+r 排序,选一个没被选到的最小的 rrr 的 l+rl+rl+r,减去选到的最小的 lll。
时间复杂度 O(∑nlogn)O(\sum n\log n)O(∑nlogn)。
E1
n≤20n\le 20n≤20 考虑暴力状压。
dp[i][j]dp[i][j]dp[i][j] 表示第 jjj 个人操作,状态为 iii 最终取到的值,最后加起来即可。
时间复杂度 O(∑2nn)O(\sum 2^n n)O(∑2nn)。
E2
和 E1 一样预处理,只不过转换成 01。
枚举 iii 从 111 到 mmm,每次去查 dpdpdp 数组,累加即可。
时间复杂度 O(∑2nm)O(\sum 2^n m)O(∑2nm)。
注意到 popcountpopcountpopcount 相同的数贡献也相同,所以统计 popcountpopcountpopcount 为 iii 的数有多少个乘起来即可。
时间复杂度 O(∑2nn+nm)O(\sum 2^n n+nm)O(∑2nn+nm),可以通过。