2024.8.12

想到点东西:如果问最长的符合要求的长度,且这个东西在随机条件下不好实现,那么最好别二分,直接枚举左右端点,$O(n^2) $ + 剪枝往往会快得多。

T1 序列

给一个序列,求其中能是公比为 \(q\in[1,1000]\) 的等比数列的子序列的最长的连续段长度

\(n\le 10^5,a_i\le10^{18}\)

考场做法:二分答案,跑 \(n\) 看看每一段能不能是一个等比数列的子序列。然后就卡死了,因为你怎么在 \(O(?)\)\(\text{check}\),这明显不好搞,上什么数据结构能搞这玩意,\(\text{2h}\) 想了一堆假做法。每次考试拉开差距的都是 \(\text{T1}\),但是这分就硬是拿不到有啥办法。考场思路主推线段树,因为我第一个假做法就是求最大最小值和总和,因为读错题了,没发现是子序列。那么公比这个玩意明显应该找最小的,那么数据结构维护的话就应该使用平衡树,求出每两个数之间的比,找到最小的底数,判断是否一样。这样搞的 \(\text{check}\) 甚至是 \(O(n\log n )\),总的甚至可以到 \(O(n^2\log^2 n)\),不死透了吗。朴素都是 \(O(n^2\log n )\),人家还能剪枝,你这还剪不掉,二分是必须跑的。

然后就没啥了,同样的平衡树维护,只需要枚举左右端点,取长度最大值,并用类似埃筛的办法跑一下每个 \(1e18\) 以内的数的最小底数。

T2 熟练剖分

T3 建造游乐园

全场只有 \(\text{wzw}\) 切了,剩下的人除了我都保龄了。……我居然是全场唯二两个有分的。没分主要是暴力不太好打(还有忘交的),我连通性判错了,撞上一个小点。

\(n\) 个点,求出所有能删掉或加上一条边使其构成欧拉回路的无向图无重边自环的建边方案,对 \(10^9+7\) 取模

暴力就像上次 \(\text{T1}\) 差不多,但是需要状压每两个点之间的边,跑一遍判连通性和欧拉回路就行了。

要求把图删或加边变成欧拉回路的方案,不如说是把欧拉回路删或加边变成欧拉通路的种类数,其实就是在欧拉图中 \(\frac{n(n-1)}{2}\) 条边中选一条改变状态,都能变成欧拉通路,那答案就是欧拉图个数 \(f_n\)\(C_{n}^{2}\)

\(g_i\) 表示构一张不保证点联通但每个点度数都是偶数的边联通的图的方案数。对于一张任意的图来说,有 \(C_{n}^{2}\) 条边,每条边可连可断,形态 \(2^{C_{n}^{2}}\) 种。要构造这样一张所有点度为偶且不一定联通的图,"不一定"很抽象,就是乱连。乱连简单,但度都为偶不太好搞。一种办法:先把前 \(n-1\) 个点乱连,那肯定有一些点的度为奇,现在就加进来第 \(n\) 个点。把那些度为奇的点都跟这第 \(n\) 个点一连就 \(ok\) 了。那第 \(n\) 个点度数能保证为偶吗?一条边会创造两个度,因此对于任意一张图,总度均为偶。前 \(n-1\) 个点总度为偶,它尚有一些点度为奇,那就说明这些奇点的个数为偶。因此 对于任意一张图,奇点的个数均为偶。那第 \(n\) 个点度也就为偶了。

因为我们前 \(n-1\) 个点是可以乱连的,那么就有 \(2^{C_{n-1}^{2}}\) 种连法。

欧拉图是两两连通,所以我们用”不一定“\(-\)”一定不“就可以得到"一定"。

\(f_i = g_i-?\)。考虑 \(?\) 部分,咋就能一定不呢,我们从 \(i\) 中分离出来 \(j\) 个点,作一个联通块。这个块和 \(i-j\) 个散点不联通,就可以保证”一定不“。呃这里我们要留一个 \(1\) 节点不能被分离出去,钦定它是一个锚点然后把其他点扣离它。那就有 \(j-1\) 个非 \(1\) 号点和它在一起,从 \(i-1\) 个点里选:\(C_{i-1}^{j-1}\)。接着扣离的 \(i-j\) 发现是”不一定“,剩下的 \(j\) 是”一定“。

那么有

\[\left\{\begin{matrix} g_i =& 2^{C_{n-1}^{2}}\\ f_i =& g_i - \displaystyle\sum_{j=1}^{i-1}C_{i-1}^{j-1}f_jg_{i-j} \end{matrix}\right. \]

推到 \(f_n\) ,答案 \(f_n \cdot C_{n}^{2}\)

T4 由乃的 OJ

posted @ 2024-09-14 21:17  WanGMiNgWeI  阅读(2)  评论(0编辑  收藏  举报