Crysfly🌈的博客

博客

Public Round #15 题解

2025-02-13 19:14:55 By Crysfly🌈

谢罪环节:

这次题目疑似组难了,码量也不太平衡。总之祝大家省选顺利(

最小表示法

来源:

拆成若干次计算 [f(ai)=f(ai+1)]

对于长度为 n 的串,若循环节为 d,则 f(s)=1d 的概率都为 1d

g(n) 为循环节为 n、长度为 n 的串个数,可以容斥得到 g(n)=d|n26dμ(nd)

P(f(n)=k) 可以分为 d0(n) 个值相等的连续段,对每个连续段算概率即可。

时间复杂度 O(nd0(V))

注意特判 n=1

二叉搜索树

来源:

首先把询问离线。考虑在链上怎么做:

考虑差分,维护两棵相邻 BST 之间的变化。扫描线,在 [l,r] 加入插入操作,相当于 l 时加入了一个插入操作,r+1 时删除了一个插入操作。

考虑对于一个 x,哪些点是 x 的祖先?

对于所有比 x 大的数 y,把 y 按照值从小到大排序,一个一个扫,设 now=tx,如果 ty<nowy 记入 x 的祖先,并且 nowmin。也就是所有使 now 变小的点的权值。

以权值为下标、时间为值建线段树,那上面要求的信息就是套用楼房重建,前缀最大值线段树的做法。

对于比 x 小的 y,就是 y 按照值从大到小排序,一个一个扫。于是维护两棵前缀最大值线段树即可。

在树上的做法:

直接树链剖分,对每条链套用链的做法,时间复杂度 O(q\log^3 n),期望得分 72 或 100,被 hos_lyric 卡过去了

既然在链上的做法是差分,那也可以套用到树上做树上差分。发现维护的信息就是在线段树上做,可以做树上差分+线段树合并。时间复杂度 O(q\log^2 n),期望得分 100。

算法 2 by gqh

先发现答案的形式比较简单,只和x<=query的tim后缀最小值有关,x>query同理。

然后离线下来对x排序用吉司机线段树对time去checkmin即可。

虽然是 q\log n 次区间checkmin,但是复杂度仍然是 O((n+q)\log^2 n)

黑白球染色

来源:

相当于有一个直方图,图内的格子必须是 0,外面的格子可以是 0/1。(这里把 a_i 翻转了,变成 \le a_i 的必须是 0

每个 0\to 0 之间必须 xor 偶数次,0 到末尾 xor 偶数或奇数次都行。

假设对于这每个绿色的区间都求出一个多项式 f(x)f(x)[x^i] 表示在区间内操作了 i 次的方案数。

从下到上做,每个区间就是下面一层子区间一堆多项式乘起来,然后再乘一个变换。

这个变换在多项式上是 F(x) \to \frac{(F(x+1)+F(x-1))}{2}

由于最终答案是最上面那个多项式的 F(0),所以最下面多项式维护点值 F(-m...m),往上一层能求出 F(-(m-1)..(m-1)),直到最上面一层能求出 F(0),就行了。

m 棵线段树,维护每一层的每个区间的 F 值,以及 F 值的区间乘积。修改一个 a_i 时,只会有 O(m) 个区间的 F 值要重新计算。

时间复杂度 O(qm^2\log n)

另一个做法:https://www.cnblogs.com/275307894a/p/18450179

Comments

[+16]
C 题最后那个 f(x)[x^i] 表示的应该是还有 i 次没操作的方案数吧
  • 2025-02-16 19:26:22
  • Reply
[+10]
算是很不错的题了qwq
  • 2025-02-16 23:13:53
  • Reply
吐槽一下,T1 在 PR #11 也出现过(https://pjudge.ac/contest/1289/problem/21778)
  • 2025-02-17 08:22:24
  • Reply
Comment replies
Crysfly🌈:我不知道两年前搬过,搬题事故了
Crysfly🌈🌈 请问这一场三道题的难度大概是什么水平?就是对应到CF dif或者luogu 蓝紫黑是什么水平?
  • 2025-04-03 11:52:05
  • Reply
Comment replies
Crysfly🌈:大概是省选单天的难度。
chenhongrui:Reply Crysfly🌈🌈:好的,谢谢您。题目选得还是很好的,只是T2大样例疑似太水了,大样例全过交上去30pts,而且看榜好像也有一个老哥跟我错得一模一样,不过不对拍确实是我的问题。

Post a comment

You can use @mike to mention the user mike.

If you wish to input the '@' character, please use @@