思维题选记

洛谷 P1146 硬币翻转

首先,有一个关于硬币翻转的性质,就是一个硬币只有翻转奇数次才能反面朝上,这是显然的。这启发我们构造一种能使每个硬币翻转奇数次的方案。

同时,我们发现对完全相同的一组 \(n-1\) 个硬币执行两次及以上的操作是没有意义的,因为执行奇数次的话,就相当于 \(1\) 次。偶数次的话就相当于什么都没有做。所以说方案数最大就是 \(n\) 次,因为不同的操作序列只有 \(n\) 个。

有了以上两个性质,我们便可以构造如下方案:

\(i\) 次翻转除第 \(i\) 枚硬币以外的 \(n-1\) 枚硬币,其中 \(1 \leq i \leq n\)

这样的方案中显然每一枚硬币都被翻转了 \(n-1\) 次,由于 \(n\) 为偶数,所以符合性质一。这样操作次数共有 \(n\) 次,可以证明这是最小的方案数,同时也符合了性质二。这样的方案也是字典序最小的方案,所以这就是正确的解法。

NOIP2000 提高组 进制转换

十进制数转负进制,同样可以使用短除取余法,但是会出现余数为负的情况,例如 \(-11 \div -2 = 5 ~\cdots \cdots -1\),此时我们可以用如下法方解决此问题:

我们设被除数为 \(a\),除数为 \(b\),余数为 \(c\),商为 \(d\),其中 \(c<0\)\(b<0\)

由除法的定义可知 \(a=b \times d +c\),所以有 \(a=b \times (d+1)+c-b\),由于余数小于被除数,所以有 \(c \lt b\),又因为 \(c<0\)\(b<0\),所以新的余数 \(c-b > 0\)

所以我们只需要将商加 \(1\),余数减除数,即可解决余数为负的情况。

洛谷 P2192 HXY玩卡片

如果一个数能被 \(90\) 整除,那么它一定能被 \(9\)\(10\) 整除。

  • 能被 \(10\) 整除,那就说面答案的个位数一定是 \(0\),如果没有 \(0\) 的话就是无解。
  • 能被 \(9\) 整除,那就说明答案的各个位加起来的和能被 \(9\) 整除,由于答案仅有 \(0\)\(5\) 组成,所以只需要判断所有 \(5\) 加起来能否被 \(9\) 整除即可。也就是说,如果有 \(x\)\(5\),那么需要保证 \(5 \cdot x\)\(9\) 的倍数,所以有 \(x \mid 9\)

有了上面的推导,我们便有了解法:

设一共有 \(x\)\(5\),因为要满足 \(x \mid 9\),所以我们最多只能选 \(\lfloor \frac{x}{9} \rfloor \times 9\)\(5\)。因为要求最大,所以把这些 \(5\) 先输出,最后输出有的所有 \(0\)。但是有可能没有足够的 \(5\),这样就只能输出 \(0\) 了,当然是在有 \(0\) 的情况下。

NOIP1998 提高组 拼数

  • \(X\) 为数字 \(x\) 的字符串形式。
  • \(A+B\) 表示字符串 \(A\) 和字符串 \(B\) 相连组成的字符串。

既然要构造最优解,显然如果有不优的情况的话,就需要对序列进行调整,具体而言我们可以这样做:

如果有 \(A_{i+1}+A_i>A_i+A_{i+1}\),其中 \(1 \leq i \lt n\),那么就交换 \(A_{i+1}\)\(A_i\),现在 \(A\) 的字典序明显更大了。重复上述操作,直至没有满足上述条件的情况了。

为什么上述做法是对的呢?我们可以考虑用反证法进行证明:

经过上述操作后,设最终序列为 \(T_1 \dots T_n\),且序列 \(T\) 满足 \(T_{i}+T_{i+1} > T_{i+1}+T_i\),其中 \(1 \leq i \lt n\)。我们先假设命题不成立,则序列 \(T\) 不是字典序最大的序列,而 \(S\) 是字典序最大的序列,那么 \(S\) 必然有与 \(T\) 不同的地方,则必然有 \(S_{i+1}+S_i>S_i+S_{i+1}\),此时如果交换 \(S_i\)\(S_{i+1}\),则必然有更大的字典序,与假设矛盾,故命题成立。

洛谷 P9484 「LAOI-1」GCD

命题 \(1\):当 \(x\)\(y\) 不连边时时,\(x\)\(y\) 的最短路径中一定有一条只经过一个中转点的路径。

命题 \(2\):在所有 \(x \rightarrow z \rightarrow y\) 的路径中,\(z=\gcd(x,y)\) 时的路径是最短的。

考虑先证明命题 \(2\)

首先,可以推导出条件 \(\gcd(i,j)=i,\operatorname{lcm}=j\) 等价于 \(i \mid j\),也就是说 \(z\) 一定是 \(x\)\(y\) 的一个公倍数/因数,

  • \(z\) 为公倍数时,设 \(z=k \times x\)\(x \rightarrow z\) 的长度 \(d\)\(z-x=(k-1) \times x\),由于 \(k > 1\),所以此时 \(d \ge x\)。而 \(z=\gcd(x,y)\) 时,\(x \rightarrow z\) 的长度为 \(x-\gcd(x,y)\),显然有 \(d > x-\gcd(x,y)\)。同理 \(z \rightarrow y\) 也是不优的,故这种情况是不优的。

  • \(z\) 为公因数时,且 \(z < \gcd(x,y)\),此时的总长度 \(d=x+y-2\times z\),所以 \(d > x+y-2 \times \gcd(x,y)\),故这种情况也是不优的。

有了上面的推论,命题 \(2\) 得证。

接下来证明命题 \(1\)

\(i \mid j\)\(i>j\),有 \(k\) 满足 \(i \rightarrow k \rightarrow j\)\(g=\gcd(i,j)\),由命题 \(2\) 得此时的最短路径 \(d=i+j-2 \times g\)

对于命题 \(1\),如果有 \(i-j \le d\),即 \(i \rightarrow k \rightarrow j\) 可以变成 \(i \rightarrow j\),那么命题 \(1\) 就是对的。

考虑证明 \(i-j \le d\)

\[i-j \le i+j-2 \times g \]

\[-2 \times j \le -2 \times g \]

\[g \le j \]

由于 \(\gcd(i,j) \le j\) 成立,所以有 \(i-j \le d\),故命题 \(1\) 得证。

有了命题 \(1\) 和命题 \(2\),易得答案为 \(x+y-2 \times \gcd(x,y)\)

洛谷 P2651 添加括号III

为了使最终的结果是一个整数,所以分母要尽可能大,容易发现 \(a_1\) 一定是分子,\(a_2\) 一定是分母,那么最好就是让 \(a_3 \sim a_n\) 全都变成分子,构造方式如下:

\(a_1/(a_2/a_3/ \cdots /a_n)= \frac{a_1 \times a_3 \times a_4 \times \cdots \times a_n}{a_2}\)

所以只需要将每一个 \(a_i~(i \neq 2)\)\(a_2\) 进行约分,即使 \(a_2/\gcd(a_2,a_i)\),最后看 \(a_2\) 是否为 \(1\) 即可。

蓝桥杯 2013 省 B 翻硬币

首先可知相邻的两个硬币最多只会翻转一次,否则就没有意义,又因为题目保证了没有无解的情况,所以只要出现一个不同的位置,直接翻转即可,这样一定是最优解。

洛谷 P9586 「MXOI Round 2」游戏

在第一回合,小 C 可以直接出干掉小 D,即 \(c_1 > d_2\)\(c_3 > d_1\) 的时候, 如果干不掉,那么

posted @ 2024-05-28 21:25  zhuluoan  阅读(41)  评论(0)    收藏  举报