4月杂题

距离 NOI2023 还有 109 天,不能再沉溺于省选的成功了。开始更新博客!

4 月重点在 whk 上,不会更很多,为了调和 whk 的。

1.[NOI 2023 联合省选] 填数游戏

考虑对于第 \(i\) 个数,把 \(T_i\) 中的两个数连边,特别地,只有一个数连自环。

此时每个连通块只能是树/基环树。

基环树是好做的,因为后手只有两种取法,算一算就好了。

对于树,可以转化成:点有权值,对于一些边可以子树内+1/子树外+1,要使得最小点权最大。

有结论:取子树内的边一定是根到某个点 \(x\) 路径上所有能取的边。

原因是,考虑两个没有祖先关系的子树,同时取子树内不如同时取祖先外;对于两个有祖先关系的 \(x,f\)\(x\) 取子树内,\(f\) 取子树外不如 \(x\) 取子树外,\(f\) 取子树内。

可以画图理解一下。

由此,两遍 dfs ,第一次把每个子树的点权最小值算出来,第二次计算每个 \(x\) 的答案即可。复杂度是线性的。哎,这个没做出来很拉。

2.P4769 [NOI2018] 冒泡排序

首先观察到有 \(x>y>z\) 就寄了,继而发现没有 \(x>y>z\) 这个条件是充要的,而这个又能用某 D 氏定理转化成,能够拆成两个上升子序列。

先做没有字典序的限制,考虑取的两个子序列,一定有一个的末端是全局最大值。\(f_{i,j}\) 表示还要填 \(i\) 个数,其中 \(j\) 个数 > 另一个子序列末端。

讨论一下发现 \(f_{i,j}=\sum\limits_{k=0}^j f_{i-1,k}\) 。把图画出来就一目了然了,就可以把 \(f\) 写成两个组合数相减的形式。

至于有字典序的限制,枚举相同的前缀后,大概需要求一个 \(\sum\limits_{k=0}^p f_{n,k}\) ,根据定义这就是 \(f_{n+1,p}\) ,就做完了。

3.CF1508D Swap Pass

首先,如果排列只形成一个置换环,就随便取一个点连菊花即可。

现在有多个环,考虑通过一些操作变成一个环,且尽量不影响答案。我们知道,还是考虑最后的菊花,发现按极角排序后,每次取相邻两个不在同一环的点交换即可。

需要注意的是不要取夹角 > 180 度的两个点,简单的解决方法是一开始取横坐标最小的点。

4.CF1610F Mashtali: a Space Oddysey

首先思考只有边权为 \(1\) 怎么做,发现把度数为奇数的点都连向一个虚拟点,跑欧拉回路即可。

对于有边权为 \(2\) ,它取的方法可能很多,但我们尝试强化条件,来更方便的构造欧拉回路:

我们设 \(a_x\) 表示 \(x\) 考虑边权为 \(1\) 时的度数,\(b_x\) 表示为 \(2\) 的度数。

\(a_x,b_x\) 有一个是偶数,则为偶数的要求入=出,为奇数的要求 |入-出|=1,这样一定满足条件。

\(a_x,b_x\) 皆为奇数,则需要一个入-出=1,一个出-入=1。

发现除了第二种情况,我们完全可以拆成两个图分别处理问题。处理第二种情况,在 \(x\)\(x+n\) 连边即可。

5.CF1781G Diverse Coloring

树上的构造有很多都是从叶子开始玩,这个题也不例外。

先观察样例,大多数时候答案都是 点数 mod 2。其实只有样例给出的情况会使答案变大。

核心:尝试把树剖成一些长度为 \(2\) or \(3\) 的链。如果能剖出来就做完了。回忆一下,我已经见过重链剖分,长链剖分,菊花剖分了。这个叫短链剖分吗(

剖是很容易的:由于是二叉树,从下而上贪心的弄,传到父亲时要么剖好了要么剩一个根。

对于当前点如果两边剩至少一个就能串起来,都没剩的话,考虑如果有一个儿子连的是长度为 \(2\) 的链,也能串起来。

这样子搞,如果最后还剩一个点,分两种情况:

如果这个根有两个儿子,就直接串起来形成一个 \(7\) 连通块,它一定能黑白染色使得 4黑 3白 且满足题目条件,可以讨论一下。

只有一个儿子就不好搞,所以我们的构造一开始就取度数为 \(2\) 的当根。

没有度数为 \(2\) 的点时:

如果是样例的情况就寄了。

否则,考虑取一对兄弟叶子,把这俩点和父亲串成一个三连通块然后删掉,这样子它们的爷爷度数就为 \(2\) 了。

6.P5518 [MtOI2019]幽灵乐团

最难的 case: \(\prod\limits_{i=1}^A \prod\limits_{j=1}^B \prod\limits_{k=1}^C \gcd(i,j)^{\gcd(i,j,k)}\) .

考虑对 \(\gcd(i,j,k)\) 施加 \(\varphi*I=ID\) ,可得 \(\prod\limits_{p=1}(\prod\limits_{i=1}^{\left\lfloor\dfrac{A}{p}\right\rfloor}\prod\limits_{j=1}^{\left\lfloor\dfrac{B}{p}\right\rfloor}p\gcd(i,j))^{\varphi(p)\left\lfloor\dfrac{C}{p}\right\rfloor}\)

考虑计算 \(f(i,j)=\prod\limits_{i=1}^{A}\prod\limits_{j=1}^{B}\gcd(i,j)\) 。枚举 \(\gcd(i,j)\) 并施加 \(\mu*I=e\) ,可得 \(\prod\limits_{p=1}\prod\limits_{d=1}p^{\mu(d)\left\lfloor\dfrac{A}{pd}\right\rfloor\left\lfloor\dfrac{B}{pd}\right\rfloor}\)

\(O(n\log n)\) 预处理 \(g_T=\prod_{d|T} d^{\mu(\frac{T}{d})}\) ,上式枚举 \(pd=T\) 可得 \(\prod\limits_{T=1}g_T^{\left\lfloor\dfrac{A}{T}\right\rfloor\left\lfloor\dfrac{B}{T}\right\rfloor}\) ,整除分块即可 \(O(\sqrt{n}\log n)\) 算出。

回到一开始要求式子,可写成 \(\prod\limits_{p=1}(p^{\left\lfloor\dfrac{A}{p}\right\rfloor\left\lfloor\dfrac{B}{p}\right\rfloor}f(\left\lfloor\dfrac{A}{p}\right\rfloor,\left\lfloor\dfrac{B}{p}\right\rfloor))^{\varphi(p)\left\lfloor\dfrac{C}{p}\right\rfloor}\)

预处理 \(p^{\varphi(p)}\) 的前缀积即可。复杂度是 \((\sum\limits_{i=1}^{\sqrt{n}} \sqrt{n/i})\log n=n^{\frac{3}{4}}\log n\)


这篇写完以后我停更了很长一段时间,一开始觉得写博客浪费时间就断掉了,后来发现训练状态越来越差,整天在机房无所事事。看来博客对我来讲是很重要的调节方式啊。

和妹子聊天也是极好的,但我也很久没机会和她接触了。

现在是 5 月 3 日,把摆烂期间做的一些题记下来。


7.CF1801G A task for substrings

先考虑一个前缀怎么做,发现可以建 AC 自动机在上面跑。考虑把 \([x,y]\) 的答案拆成两个前缀的答案相减,再减 \(1\le l<x\le r\le y\) 的串贡献。

如果没有 \(y\) 的限制,考虑我们用对正反串分别建出 AC 自动机,则可以把问题转化成,现在得到两个点,分别取一个在 fail 树的祖先,使得拼起来是一个给出的串。

我们枚举给出的串以及划分的位置,就可以通过拍 dfn 序转化成二维偏序了。

现在考虑 \(y\) 的限制,相当于是要倍增到一个长度 \(\le y-x+1\) 的点,这是简单的。

posted @ 2023-04-03 19:42  grass8woc  阅读(301)  评论(1编辑  收藏  举报