2022-10-22 CSP赛前隔离时的模拟赛 1:3
T1
一个比较迷的数论题,推柿子。
首先能得到基础柿子:
\[m\cdot x + \frac{m(m-1)\cdot y}{2} = n
\]
略微化简得:
\[2x + (m-1)y = \frac{2n}{m}
\]
因为 \(x\),\((m-1)\) 和 \(y\) 是整数,所以 \(2n\) 必须整除 \(m\),否则无解。
(当时用了一种更迷的办法证的,太麻烦不列了。
Upd 2023.12.29
可恶为什么不列(((
我现在想不起来了。
以 \(m\) 进行分讨:
- \(m = 1\),显然只有一种方法。
- \(m\) 是奇数,则包含 \(\frac{f}{m\div 2 \times 2} + 1\) 种方法。
(这种 \(m\div 2\times 2\) 的表示方法意为将二进制下 \(m\) 的最后一位变为 \(0\)。) - \(m\) 是偶数,则包含 \(\frac{f}{(m-1)\times 2}+1\) 种方法。
T2
使用一种类似于摩尔投票法的东西(Keven_He 说像,我不太觉得):
将所有人分为两队,设第一队的总攻击力为 \(a\),第二队的总攻击力为 \(b\)。
不妨设 \(a \le b\),求 \(\min(b-a)\)。
很易理解:
因为他们在一个擂台上,而且迟早要打,所以可以意会为一起打群架。
将 \(sum\) 设为所有人攻击力之和。
要求 \(\min(b-a)\),即要求 \(a\) 与 \(b\) 尽量接近,可以使用 01背包求解:
设 \(sum \div 2\) 为背包容量,每个人的攻击力为同时为体积与价值。
最大价值即为符合要求的 \(a\),而 \(b\) 为 \(sum - a\),则答案为 \(sum - 2\cdot a\)。
T3
T4
从前到后扫一遍,每一次只要当前的关怀值不为负,就有可能对后面作出贡献,将其更新为目前的关怀值 \(-(k-1)\),否则一定不会对后面作出正贡献,将其更新为 \(0\)。
每一次在关怀值减少的时候更新答案。