Examples

2022-12-8 #6 飘零在无间 决裂尘埃世界

——校长《告别曲》

30 AT_code_festival_2017_qualb_f Largest Smallest Cyclic Shift

一个比较简单的做法:(但我不能说明其正确性)

使用 multiset 维护字符串的若干“子结构”,每次选择两个进行拼接。循环移位肯定会使字典序最小的子结构放在最前面,于是我们将其接上字典序最大的后缀。

复杂度 O(n2logn)

一个很容易得知正确性的做法:

逐位确定字符串(假设现在确定的字符串为 U),即计算:是否存在一个字符串 S,使得 S 的最小循环移位大于等于 U

那么可以令 S 为自己的最小表示,那么 S 满足,对于任意后缀 qi 有:qiSSSSSSSSS

由于 SU,所以 qiUUUUUUUU

那么限制就只在后缀上了,我们可以从后往前 dp 这个 S 串,复杂度 O(n5)

31 P3349 [ZJOI2016]小星星

直接树形 dp 是 O(3nn) 的,基本跑不动。

我们记录集合的原因是“并为全集”的限制,我们不妨容斥这个并,枚举一个集合表示只能用这个集合内的数,这样就可以 O(2nn3) 了。


又摆了一天,怎么能这样???

《未来可C》首期嘉宾预告——嘉然

期待起来了!!!另外!想要告诉各位小伙伴!
12月11日晚上8点,A-SOUL二周年纪念直播!时光无涯,你我共同奔赴~
记得要来哦!


vp:2022 CCPC Mianyang

32 J Middle Race

真的很难啊,为什么都会这东西。

尝试用 na/b/c 组合出一个最接近 n(a+b+c)3 的数, x 接下来说明这个构造一定合法。

不妨令这个数大于 n(a+b+c)3,那么对手的两个数一定一个大于 n(a+b+c)3,一个小于 n(a+b+c)3,若想让 x 不合法,大于 n(a+b+c)3 的数一定小于 x,这与“最接近”矛盾。

33 B Call Me Call Me

简单数据结构,没人过。

这类问题有着一个经典的解法,类似 P7603 [THUPC2021] 鬼街,可以设定很多个阈值,一旦一个阈值发生了击破,我们就重新分配阈值。

使用猫树分治,只需在 [l,mid],[mid+1,r] 设定阈值,猫树每一层仍然采用线段树维护,复杂度 O(nlog2n)

但这太难写了,有一种比较好写的根号。

考虑操作分块,那么我们只需考虑一个人的最后根号次修改。等其计数器不超过根号时,将其挂在线段树上就好了。

34 M Rock-Paper-Scissors Pyramid

为啥这是签到啊。

考虑维护一个栈,栈内保存一个操作序列,满足任意两个相邻的手势,前面都能打败后面,那么栈底就是答案。

这个栈的更新是平凡的。

posted @   xiaoziyao  阅读(142)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下
点击右上角即可分享
微信分享提示