写题-2025.11

2025.11.25

开始写超级水题来复健

……难道我只能写写橙题了吗

洛谷 P5887 Ringed Genesis

最开始把 \(k\) 看成了每只兔子不同,吓了一跳,想了一会儿没想出来。感觉能做,留个坑。

由于 \(\gcd(a,b) \mid (ax+by)\),所以只需要取步长 \(k\) 和环长 \(n\) 的最大公约数,就得到兔子在环上能走出的最小非零位移。
(取 \(a=k\) 为步长,\(b=n\) 为环长,就可以把 \(ax-by\) 理解为走了\(x\) 步再减去 \(y\) 圈后得到的位移)

于是把所有的 \(p_i\)\(\gcd(k,n)\) 取模,得到一系列最靠近 \(0\) 的出发点,再 dp 即可。

甚至求 \(\gcd\) 还写错了……耻辱。

洛谷 P1028 [NOIP 2001 普及组] 数的计算

\(dp_i\) 表示以 \(i\) 开头的合法数列的数量,则有:

$ dp_i=1 + \sum_{j=1}^{\lfloor \frac{i}{2} \rfloor}dp_j$

换成正向写法——把 \(dp_i\) 加到 \(dp_{2i},...,dp_n\) 上,就做完了。

小小优化,把上界从 \(n\) 改成 \(\lfloor \dfrac{n}{2} \rfloor\)

真正优化,把正向更新的区间加改成差分写法,时间变成 \(O(n)\)

(发现开了 O2 之后 \(10^3\)\(O(n)\)\(O(n^2)\) 没什么区别 )

2025.11.26

洛谷 P1106 删数问题

简单贪心,好耶。

先考虑到如果能搞出先导 \(0\) 一定是最优的,但这种想法被后续的策略包含了。

考虑对数字大小影响最大的是首位,所以如果能把首位变小一定不劣。

于是,进行 \(k\) 次寻找,如果当前位的数字比更高一位的小,就删掉后者;如果找不到就删去末尾(这是容易验证的)。

感觉“最优子结构”的性质是显然的,有空回来补个证明。

看了题解发现基本是小年龄同志们的舞台,缺少数学化的证明,然而已经交不了题解了,可惜。

发现自己近来做贪心时总是很想给出严谨证明。

posted @ 2025-11-27 13:26  浣熊’  阅读(2)  评论(0)    收藏  举报