[2024.11.20]NOIP 模拟赛
鲜花:今年又在 luogu 被卡7级线了。
赛时
T1 看见区间操作还以为是贪心+数据结构,然后再看两眼发现这原来是个伪装的多测。
对于每一个元素 \(m\),相当于要构造一组 \(xA+yB=m\) 的 \((x,y)\) 解,这是扩欧。
单纯是不行的,题目上要使得 \((|x|+|y|)_{min}\)。
但是我忘记了扩欧的通解公式了,所以以下内容是我赛时的手推过程:(肯定不是最简的,只是赛时乱推的)
求出来扩欧的 \((x,y)\) 并判断无解后,先令
然后设置两个偏系数 \(a,b\) 使得
拆项得
移项得 \(aA=bB\)。
因为有两个变量,不好处理,所以要把它们用同一个变量表示出来。
把原式变成
然后同时乘 \(\gcd(A,B)\) 得
从而有
于是令 \(\frac{a\gcd(A,B)}{B}=\frac{b\gcd(A,B)}{A}=k\),得
推出来这个以后,就可以得到 \(k=x\) 与 \((|x|+|y|)=y\) 的函数关系式为
感性看一眼发现这玩意下凸,所以可以用三分求解(虽然能求零点,但我忘了这个的正确性了,保险起见用了三分)
写了一遍就过了。
T2 先把 \(n=1,2\) 的写了,剩下的拼了个暴搜。
T3 看到没有基于 \(C\) 的部分分,就也跳了。
T4 看上去很有思路,胡了一个 \(\mathcal{O}(n\sqrt{n}\log n)\) 的01Trie+莫队做法,此时 11:00。
开始写,11:30 写完,开始调。
因为不是大考,所以不想写暴力了。
12:00 没调完,所以交了一发搞一搞。
发现没过样例的代码搞到了 9pts。
总结
T3 其实有些部分分只要推一些很简单的式子就行了,这说明看到一道暴搜写不了的题目时应该想想特殊性质。
T4 正解是莫二离,发现好像就我一个人没调出来我这种做法,这说明我的代码能力太差了。
T2 可以用 bitset
搞到 60pts,但是赛时没想到。
感觉还是书上知识记得不牢的原因,导致 T1 写完的时间有点晚了。