[2024.11.20]NOIP 模拟赛

鲜花:今年又在 luogu 被卡7级线了。

赛时

T1 看见区间操作还以为是贪心+数据结构,然后再看两眼发现这原来是个伪装的多测。

对于每一个元素 m,相当于要构造一组 xA+yB=m(x,y) 解,这是扩欧。

单纯是不行的,题目上要使得 (|x|+|y|)min

但是我忘记了扩欧的通解公式了,所以以下内容是我赛时的手推过程:(肯定不是最简的,只是赛时乱推的)

求出来扩欧的 (x,y) 并判断无解后,先令

X=xmgcd(A,B),Y=ymgcd(A,B)

然后设置两个偏系数 a,b 使得

(X+a)A+(Yb)B=m

拆项得

(XA+YB)+aAbB=m

移项得 aA=bB

因为有两个变量,不好处理,所以要把它们用同一个变量表示出来。

把原式变成

aAgcd(A,B)gcd(A,B)=bBgcd(A,B)gcd(A,B)

然后同时乘 gcd(A,B)

aAgcd(A,B)=bBgcd(A,B)

从而有

agcd(A,B)B=bgcd(A,B)A

于是令 agcd(A,B)B=bgcd(A,B)A=k,得

a=Bkgcd(A,B),b=Akgcd(A,B)

推出来这个以后,就可以得到 k=x(|x|+|y|)=y 的函数关系式为

y=|X+Bgcd(A,B)x|+|YAgcd(A,B)x|

感性看一眼发现这玩意下凸,所以可以用三分求解(虽然能求零点,但我忘了这个的正确性了,保险起见用了三分)

写了一遍就过了。

T2 先把 n=1,2 的写了,剩下的拼了个暴搜。

T3 看到没有基于 C 的部分分,就也跳了。

T4 看上去很有思路,胡了一个 O(nnlogn) 的01Trie+莫队做法,此时 11:00。

开始写,11:30 写完,开始调。

因为不是大考,所以不想写暴力了。

12:00 没调完,所以交了一发搞一搞。

发现没过样例的代码搞到了 9pts。

总结

T3 其实有些部分分只要推一些很简单的式子就行了,这说明看到一道暴搜写不了的题目时应该想想特殊性质。

T4 正解是莫二离,发现好像就我一个人没调出来我这种做法,这说明我的代码能力太差了。

T2 可以用 bitset 搞到 60pts,但是赛时没想到。

感觉还是书上知识记得不牢的原因,导致 T1 写完的时间有点晚了。

posted @   Redamancy_Lydic  阅读(6)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示