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\)

每一次在关怀值减少的时候更新答案。

posted @ 2022-10-22 20:56  STA_Morlin  阅读(58)  评论(1编辑  收藏  举报