CodeTON Round 1(div1+div2) VP 记录
晚上要回宿舍睡觉,只能第二天来 VP。
为什么前四道题都是结论啊
A. Good Pairs
显然要让所有的 \(a_k\) 的值在 \(a_i\) 和 \(a_j\) 之间才符合要求,输出最大值和最小值的位置即可。
B. Subtract Operation
手模一下发现剩下的哪个数最终减去的是最后一个数,所以直接找一下有没有 \(i,j\) 满足 \(a_i + K = a_j\) 即可。可以枚举一个数另一个 lower_bound
。
C. Make Equal With Mod
会发现很多性质。
如果 \(0,1\) 同时存在,一定无解。
如果不存在 \(1\) ,一定有解,构造方法是让 \(x\) 依次等于所有数中最大的那个。
如果存在 \(1\) 不存在 \(0\),判断一下有没有两个数满足 \(a_i + 1 = a_j\),有的话无解,否则有解
D. K-good
首先不难发现,当 \(n\) 是奇数且 \(n \not = 1\) 时,\(k\) 可以为 \(2\)。然而这并没有什么用
因为 \(k\) 个数的余数各不相同,所以要满足
\[n - \frac{k(k+1)}{2} \equiv 0 \pmod k [\frac{k(k+1)}{2} \le n]
\]
好像也没有什么用,不过能看出来答案 \(k\) 是 \(n\) 的一个因子
你想起来如果它时奇数可以放一个 \(2\),那如果它是偶数的话,就让 \(k \times 2, n \div 2\) ,知道 \(n\) 为奇数的时候,就回到了一开始的情况。
但是你发现,有时候 \(k\) 是这个奇数也是可以的。
所以,设 \(n = 2^ka\),那么答案就是 \(\min(2^{k+1}, a)\)。
为什么取 \(\min\),较小值一定是 \(\le \sqrt n\) 的,带入上面的条件式,得到
\[\sqrt n \times (\sqrt n + 1) = n + \sqrt n \le 2n
\]
而较大值可能不合法。