23.6 杂题 2

CF725F Family Photos*#

枚举一下每个照片怎么看,a1b2a2b1 时一定会 A 先取,B 后取。那先选择对两方都不优的也不一定不选。因为一定要双方都不选才寄了,那么假设 A 选择不选,先后手交换。肯定会选择一个 a1b2 尽量大的且非负的,B 也是同理的。

之前那个说错了,A 先取更优但是 B 不一定马上取走。考虑这是一个二择问题,我们希望让贡献相同然后就可以排序!让贡献都是 a+b2,这样只要在一开始加上 ab2 就可以得到正确的贡献!

于是按这个排序即可,显然这样还是满足 a1+b1a2+b2

CF1637F Towers*#

贪心,最大的当根。

CF618F Double Knapsack*#

今年 bj 高考的压轴,被 jzc 说很难。

注意到取某个区间就是合法的,看起来就要抽屉原理。考虑从值域上做文章,对于每个 i 找到最后一个 j 使得前者前缀和不小于后者前缀和。

saisbj+1<0saisbj<bj+1n0saisbj<n

n 种不同的数,n+1 个数,必然有相同的。

CF1637H Minimize Inversions Number*#

https://www.cnblogs.com/zcr-blog/p/17513239.html

CF1408H Rainbow Triples*#

数据结构也太不数据结构了!

考虑让限制松一点,假设总共有 m0。对于一个位置,如果它左边有 m20,那它只用考虑右边的限制。这种约束很像一个匹配模型,可以建出一个最大流模型。

而最大流=最小割,考虑一种优化思想——模拟最小割。肯定是割源点到颜色的边或者最后汇点到 0 的边,枚举一段 0 的前缀,可以得到颜色的一些点肯定得割,一些和后面的 0 有关。枚举后面一段割啥,可以算出答案。用线段树优化这个过程。

CF963D Frequency of String#

一个可能经典的结论:所有不同的长度之和为 m 的字符串的 endpos 集合大小之和是 O(nm)

证明:对于长度为 L 的不同字符串,肯定不可能有相同的 endpos,所以集合大小是 O(n)。而最多只有 O(m) 种长度。

然后暴力就好了。

CF1411G No Game No Life#

猜它是一个 multi-sg,只用算出每个位置的 sg 值。不过注意到这是一个图,你要求 mex 肯定不会太大,毛咕咕一下不会超过 m。并且根据均摊,你求 mex 的复杂度是 O(m) 的。接下来相当于你有一个数 v 每次选一个点异或上它的 sg 值,求最后是 0 的概率。枚举这个过程一共进行了 i 轮,每一轮相当于一个异或卷积,令 F 是 sg 值为 i 的概率的生成函数。有:

ans=1[x0]n1F(x)nn+1

注意到异或卷积是线性变换,你要求逆等价于 fwt 之后求逆再 ifwt 回去。于是有逆的充分必要条件即为 fwt 之后任意一位不是 0。下面来证明这道题符合条件。

思考 fwt 的本质,是在做一个容斥,每一项的系数是 ±1,而所有的总和是 nn+1。于是一个 F 在 fwt 之后的范围是 [nn+1,nn+1]。而取反后加 1 的范围就是 [1nn+1,1+nn+1] 一定不为 0

CF1393E2 Twilight and Ancient Scroll#

显然有一个 |S|log|S| 的 dp 做法,但是瓶颈在给字符串排序。也就是真正的瓶颈在于求 lcp。AFewSuns 给出了一种不需要科技的做法,orz。

第一个排序的部分,令 ti,j 代表第 i 个字符串去掉第 j 个字符后的字符串,要给所有 ti,j 排序。注意到相同颜色段是可以缩起来的,从后考虑每个连续段和下一个连续段,设为 c1,c2,如果 c1<c2,那么删去一个 c1 肯定是不优的,同理删去 c1 后比任意一个后面的都不优,所以删 c1 一定是在最后面,对称的 c1>c2 就在最前面。

现在比较完了同一字符串,接下来比较的是两个相邻的字符串。分类讨论删去的是 j,k,如果 jk,分成了三个部分。[1,j1],[k+1,n] 这两个部分都可以预处理 lcp,中间部分也可以预处理错位 lcp。jk 也是类似的,但是分类讨论比较麻烦。

好像讨论完这些也没什么细节了。

CF1815E Bosco and Particle#

有个粒子初始在 0 位置,1n 位置分别为有一个对撞器,如果在 0 位置则向右,如果在 n+1 位置则向左。每个对撞器有一个 01 串,初始所有对撞器的指针都在开头,当粒子走到 i 位置时,对撞器所指的值为 0 则不改变方向,否则反向,指针指向下一个位置,如果在串的末尾则指向开头。求最小的周期长度 c 满足任意 t 时间和 t+c 时间粒子在同一位置。

1n106|si|106


注意到对于一个位置,无论在右边转了多久,回到这里后和直接从右边回来是一样。左边同理。所以我们只用考虑 0,1,2 这三个位置。

还有一个显然的事实是每个粒子只用保留它的最小整周期,然后你就可以跑一个暴力,求出一个周期从左边进入 ai 次,往右边走出去 bi 次。显然这个过程是对称的。

fi 代表最后过程中 ii+1 的次数,由于左边和右边会右七七八八的破事,所以 i 这个位置可能进进出出多个周期,所以应该 fifi+1=aibi。使用主元法,用 f0 表示出所有 fi=f0j=1ibjaj。我们需要构造这个 f0 使得每一个 fi 是整数,并且 bifi。根据每个质因子考虑,随时把不够的部分补进 f0 里。不妨设 bn0,统计这一部分即可。

posted @   Semsue  阅读(19)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
Title
点击右上角即可分享
微信分享提示
主题色彩