Examples

2022-12-5 #4 泥泞步履踏碎泪泊 拥向光如抱薪赴火 妄想着永不分离的梦

——COP《光与影的对白》

调整了一下歌单,尝试听一些比较积极的歌调整心态。

今天既然没有心情做题,随便写一些之前做过的题吧。

11-30 日 vp:2022 ICPC Jinan

15 J Skills

可以发现,一个技能一旦开始学,就不会停止学超过 \(O(\sqrt t)\) 天。

于是记录一下每个技能有没有开始学,以及上回合没有学的两个技能分别停了多少天即可。

一个实现技巧:记录上一次学习的技能编号 \(c\),将三个技能重编号为 \(c,c+1,c+2\),这样转移会很好写。

16 L Tree Distance

找支配对的技巧非常经典,序列上性质比较好,可以直接用单调栈找。

树上考虑使用点分治,对于每个越过分治中心 \(u\) 的支配对,我们在距离 \(u\) 较远的一个位置考虑其。可以发现,我们只需让 \(x\) 与距离 \(u\) 不超过 \(dis(u,x)\) 的点中前驱、后继配对即可满足要求。若与某个比前驱编号小的点 \(y\) 配对,将 \(y\) 与前驱配对不劣。

最后对这些支配对做一遍二维数点,复杂度 \(O(n\log^2 n)\)

17 I Shortest Path

一个直觉是,当边数到达某个程度,我们存在一种固定的策略,重复利用某一条边。

一个比较松的上界是 \(4n\),对于长度大于其的路径,我们都可以找到路径上最小边 \((u,v)\),分别用 \(2n\)\((1,u),(v,n)\) 固定奇偶性的最短路,然后重复走 \((u,v)\)

那么暴力跑出边数较少的,后面枚举这条最小边,贡献就是一个一次函数,做个凸包就好了。

18 F Grid Points

套路地二分斜率,只需数点。

用斜率对应的直线把多边形切开,那么就是多边形整点计数。

一个经典的处理方法是每个点作一条垂直于 \(x\) 轴的垂线,这会变成 \(O(n)\) 个直角梯形的加减,类欧几里得处理即可。

复杂度 \(O(n\log^2 V)\)

稍微恢复了一下,差不多做得动题了。

vp:JSCPC2022

19 E Playing Cards

联考考过这题,如果只看式子联想到组合意义是很难的。

组合意义:定义一次操作为将某个值减去 \(k\),对 \(b\) 序列进行尽量少的操作,使得存在一个排列 \(p\) 满足 \(b_i\leqslant a_{p_i}\)

这是经典的贪心配对模型,使用类似 ABC254H 的技巧,每次考虑最大的数的匹配对象。

由于 \(b\) 值会变动,不妨从大到小枚举每个 \(a_i\),考虑其匹配哪个。注意到若存在 \(b_j>a_i-k\),选择其一定不劣于选择一个 \(\leqslant a_i-k\) 的数(注意,这里必须带上减 \(k\)),所以若存在,我们用 set lower_bound 出最靠近 \(a_i\) 的数,否则直接选择剩余 \(b\) 中最大的。

复杂度 \(O(n\log n)\)

20 G GCD on Bipartite Graph

不会构造。

\(n+m\geqslant 30\) 时,策略就是用 \(\{1\}\cup\mathbb{P}\)(素数)填满较小的集合。

不会证。

小的时候爆搜就好了。

没啥意义啊!!!!

posted @ 2022-12-05 15:17  xiaoziyao  阅读(188)  评论(0编辑  收藏  举报