Logo ryp 的博客

博客

标签
暂无

CF973 Div. 2 VP

本文章由 WyOJ Shojo 从洛谷专栏拉取,原发布时间为 2024-10-07 20:37:13

A

一秒能处理的是 $\min(x, y)$,用 $n$ 除,上取整即可。

B

$a_n$ 一定是正贡献,$a_{n-1}$ 一定是负贡献,其他的数可全分配成正贡献。因为只有正数,所以最优。

C

考虑设当前已确定的长度为 $L$,已确定的一个子串为 $Q$。每次尝试扩大 $Q$,往它的后面加上 $0$ 或者 $1$;如果答案都是 $0$,说明已经到达了结尾,需要改变扩展方向。

场上想到了大部分做法,但是没有考虑到第一次往后扩展不到的时候就可以直接往左扩展,因此询问次数超限。

CF193D Two Segments

本文章由 WyOJ Shojo 从洛谷专栏拉取,原发布时间为 2024-10-08 16:31:27

考虑到最后拼接成的值域区间是连续的。我们维护拼接出这段区间需要几个原序列中的区间。

考虑固定值域右端点 $r$,维护 $[l, r]$ 在原序列中的段数。考虑加入一个数,如果原序列中和他相邻的数还没有被加入,那么它是不会相邻的,序列段数全都加一。

如果和它相邻的某一个已经加入了,那么段数和原来一样。特别地,如果它的左右两边都已经被加入了,那么段数还要减去一。

我们每次数的就是以它为右端点,左边为 $1$ 或者 $2$ 的数的数量。考虑到每个数都是正的,那么 $1$ 或者 $2$ 一定是最小值或者次小值。于是我们做一个最小值 / 次小值计数就好了。线段树维护完了。

CF1946F Nobody is needed

本文章由 WyOJ Shojo 从洛谷专栏拉取,原发布时间为 2024-10-08 20:13:36

考虑到如果是整个区间怎么做。设 $f_i$ 表示以 $i$ 为结尾的合法子序列数量。那么

$$ f_i = 1 + \sum\limits_{j\lt i, a_j\mid a_i} f_j $$

考虑可以扫描线。固定左端点,从后往前,考虑 $i$ 作为左端点对于后面的贡献。那么,所有是 $a_i$ 的的倍数的 $\rg a_i\mid a_j$,都可以使得 $f_j$ 加上 $1$。同时,可以间接转移,也就是使得 $a_i\mid a_j\mid a_k$ 的 $f_k$ 上头加上 $f_j$。

我们这么样就做完了。

CF1290C Prefix Enlightenment

本文章由 WyOJ Shojo 从洛谷专栏拉取,原发布时间为 2024-10-11 09:46:43

考虑到每个点最多至多被两个集合包含。

如果只被一个集合包含,那么这个集合的状态就确定了;

如果被两个集合包含,那么我们就知道了这两个集合的关系。然后用带权并查集维护连通块大小,动态维护就好了。

CF1981D Turtle and Multiplication

本文章由 WyOJ Shojo 从洛谷专栏拉取,原发布时间为 2024-11-02 17:25:44

全用质数是可以的。这样,我们考虑将所用的质数作为点,将所有点之间直接连边,表示这两个点可以相邻。任意一条边不能走一次以上。这就是一个欧拉回路问题。

我们考虑需要取多少个点。如果有 $m$ 个点,那么每个点都和 $m - 1$ 个点有边,同时有自环。那么是 $m(m-1) / 2 + m$ 条边,也就是用 $m$ 条边能构造出的最长的路径长度。

但是考虑当 $2\mid m$ 时是不存在欧拉回路的。也就是,我们没法把这些边全都用上。所以我们把用不掉的删掉。删除一条边,最好能减少两个奇点,所以至少删掉 $m/2 - 1$ 条边。这样能保证这张图存在一条欧拉路径。不妨把偶数到奇数的边删掉。

再学同余最短路

本文章由 WyOJ Shojo 从洛谷专栏拉取,原发布时间为 2024-07-29 20:27:41

P2371 为例。

我们可以取一个数 $m \in A$,然后设 $f(k)$ 表示模 $m$ 为 $k$ 时整个式子最小值。

明显有 $x$ 可以转移到 $(x + a_i) \bmod m$,权是 $a_i$。由于有后效性,我们不能直接转移,考虑最短路就可以跑出来。

然后我们可以把 $[l, r]$ 差分成 $[1, r] \cap [1, l - 1]$ 来统计答案。考虑怎么统计 $[1, x]$ 的答案。如果 $f(i) \le x$,那么我们可以把 $f(i)$ 加上任意个 $x$。所以解的数量就是 $\dfrac{x - f(i) + 1}{x} + 1$。

然后统计就行了。

P8449 [LSOT-1] 逆序对 题解

本文章由 WyOJ Shojo 从洛谷专栏拉取,原发布时间为 2024-07-30 09:33:16

我们考虑到当序列中数互不相同时,交换任意两个数都会使逆序对的奇偶性变化。若 $a_i \lt a_j, i\lt j$ 交换,那么交换后逆序对数量加一;否则,逆序对数量会减一。

因此我们可以考虑把操作一和二转化为交换操作。

二操作其实可以转化为交换区间 $[l, r]$ 和 $[r + 1, k]$。

我们考虑一操作。

我们发现,$[l_1, r_2]$ 以外的部分,是不会受到影响的,因为只是这个区间之内的相对位置发生了改变。

具体来说,$[l_1, r_1]$,$[r_1 + 1, l_2 - 1]$ 和 $[l_2, r_2]$ 内部的逆序对也没有变化。

因此,实际上我们进行的操作就是把这几个区间之内的数按序交换。交换的总数是 $L_1L_2 + L_1L_3 + L_2L_3$,其中 $L$ 是每个区间的长度。

三四操作是显然的。

因此我们判断它的奇偶性,这个题就做完了。

MX731 C

本文章由 WyOJ Shojo 从洛谷专栏拉取,原发布时间为 2024-07-31 20:15:28

还是非常有意思的组合题。

我们知道一条路径的长度是不大于 $\log n$ 的,也就是说这条路径上有最多 $\log n$ 个点。

由于这是一个伪二分查找,所以说每个点上的数与要找的 $x$ 的关系是确定的。不妨设 $L$ 表示小于 $x$ 的数的数,也即向右拐,$R$ 是向左拐的数量,以及 $E$ 是相等的数量,显然 $E$ 不大于一(这里直接搬了题解的符号)。

我们考虑确定的 $L$、$R$ 和 $E$ 对应多少个序列,也就是算一个固定的 $y$ 对答案的贡献。

考虑 $y \lt x$,因为 $y \gt x$ 的情况是对称的。(越来越像题解了)

首先 $y$ 有 $L$ 种选法,然后剩下的 $L - 1$ 个链上的位置有 $x - 2\choose L - 1$,并乘上排列;同样的,$R$ 的方案是 $n - x\choose R$,同样乘排列。剩下的位置任选,乘上排列是 $(n - L - R - E)!$。最终,一个 $y\lt x$ 对答案的贡献是

$$ yL {x - 2\choose L - 1} \bigg(L-1\bigg)! {n - x\choose R} R!\bigg(n - L - R - E\bigg)! $$

对于 $y\gt x$,贡献是

$$ yR {n-x-1\choose R-1}\bigg(R-1\bigg)!{x-1\choose L}L!\bigg(n - L - R - E\bigg)! $$

对于 $y = x$,贡献是

$$ xn{x-1\choose L}L!{n-x\choose R}R!(n-L-R-E-1)! $$

(好像是吧)。

确定了 $x$、$L$、$R$ 和 $E$,这串东西就可以 $O(1)$ 出。

$x$ 是询问给出的,我们现在的目的就是怎么快速得出后三者。

P4562 游戏

本文章由 WyOJ Shojo 从洛谷专栏拉取,原发布时间为 2024-08-01 21:24:40

首先发现这个过程很类似埃筛,每个数把它的所有倍数筛掉。

然后可以知道,有的数字是不能被其他数字筛掉的,比如任何质数都不可能被其他数筛掉。当然,这只是个充分不必要条件。

可以把这些不能被别的数筛掉的数,叫做唐数。

然后发现 $t(p)$ 本质上就是 $p$ 排列中最后面的那个唐数的位置。

我们可以考虑枚举这个最后的位置,然后来算贡献。

设 $w$ 表示唐数的数量,这可以用类似筛法的东西 $O(n\lg\lg n)$ 预处理出来。

枚举这个最后的位置 $x$:

它本身肯定要选一个唐数,方案数是 $w$;

后面一个唐数也不能选,也就是把剩下的 $n - w$ 个不同的数分配给 $n - w$ 个位置,所以方案数是 ${n-x\choose n-w} (n-w)!$;

前面是任意选的,方案数是 $(x - 1)!$

所以一个 $x$ 的贡献是

$$xw{n-x\choose n-w}(n-w)!(x-1)!$$

MX0802测 B

本文章由 WyOJ Shojo 从洛谷专栏拉取,原发布时间为 2024-08-02 14:26:58

很难不设状态 $f(i, j)$ 表示前 $i$ 个数,已经选的和是 $j$ 的最少代价,那么很难不注意到显然的转移

$$f(i, j) = \min\limits_{k=0}^j f(i - 1, j - k) + w(k)$$

其中,$w(k)$ 是比 $k$ 大的数的数量。很难不做到 $O(nm^2)$

然后考虑优化。

很难发现

共 203 篇博客