2023 暑假牛客多校

时隔一年,多校又至。还是和jimmywang与shihoghmean组队。只可惜后面要文化课了,可能打不完。

2023.11.3 update: 回头发现记了4场就咕了,那就这样吧。。。

只记一些赛时想过的和听完题解后会的妙妙题:

7.17

“范式杯”2023牛客暑期多校训练营1

D

题意:\(n \times m\) 的巧克力, Kelin 先手 Walk Alone 后手拿走一块矩形的巧克力,谁拿走 \((n, m)\) 处的巧克力谁输,问结果。

数据范围:\(1 \le n, m \le 10^9\)

结论题,只有 \(1 \times 1\) 的时候 Walk Alone 会赢,其余情况均是 Kelin 赢。

K

题意:给定一个无向图 \(G(n, m)\),可以将其中任意一条边分裂成一条长度为任意的链(向边中插任意多个点),可以操作任意多次(也可以不操作)。问经过这样处理之后,从 \(1\) 号节点出发,至多走 \(k\) 步最多可以到多少个节点。

数据范围: \(1 \le n \le 10^5, 1 \le m \le 200000, 1 \le k \le 10^9\)

先考虑求 \(1\) 到每个节点的最短路,可以用 \(\text{dijkstra}\)\(01\)-\(\text{bfs}\) 解决。发现所有最短路形成的是一棵搜索树。如果在树边上插点会影响很多点到 \(1\) 的最短路,而在非树边上插点不影响 \(1\) 到任意一个点的最短路,所以考虑在非树边上插点。一条非树边上的新插点可以通过该边两端点到 \(1\) 的最短路来到 \(1\)。记点 \(x\)\(1\) 的最短路长为 \(d_x\),则一条非树边 \((x,y)\) 的贡献为 \(2K-d_x-d_y\)。还有每个不连接非树边的叶子节点贡献为 \(K-d_x\)。注意 \(1\) 所在连通块没有边的情况。

H

题意:给定两个长度为 \(n\) 的序列 \(\{a\}^n_{i=1}\)\(\{b\}^n_{i=1}\),现在可以选择其中一个序列交换其中的两个数字,问经过至多一次操作后最小的 \(\sum_{i=1}^{n}|a_i-b_i|\)

数据范围:\(1 \le n \le 200000, 0 \le |a_i|, |b_i| \le 10^{12}\)

分四类讨论,二分解决。原题 CF1513F

7.21

2023牛客暑期多校训练营2

K

题意:给出一个长度为 \(n\)\(01\) 串以及每个位置都有权值 \(a_i \ge 0\)。每个 \(1\) 最多移动一次且最多移动一位。若一个位置有 \(1\) 则可以获得权值。问最大可能的权值和。\(n \le 10^6\)

一开始贪心了半天写的巨长。发现是easy \(\text{dp}\) 题。

\(dp_{i,0/1/2}\) 表示枚举到第 \(i\) 位,这一位不动,有 \(1\) 的话前移或后移产生的最大贡献。

答案即为 \(\max(dp_{n,0},dp_{n,1})\)

H

题意:给定一个长为 \(n\) 的只含 \(\text{A,B}\) 两种字符的字符串。给定 \(Q\) 次询问 \((l, r, x)\) 表示二进制字符串 \(x\) 经过字符串 \((l, r)\) 这段区间后变成什么。之中,\(\text{A}\) 操作反转该二进制字符串(\(0,1\) 互换),\(\text{B}\) 操作将该二进制字符串视为数字计算 \(x \gets x + 1\)(溢出的位舍弃)。数据范围都在 \(2 \times 10^5\) 级别,且询问要求强制在线。

发现询问串位数始终不变,设当前给的串在十进制下为 \(x\),二进制下长为 \(\text{len}\)。考虑有一个二进制下为极长的全 \(1\) 串的数 \(s\),发现取反操作相当于 \(s\) 减去当前数 \(x\) 后取后 \(\text{len}\) 位。

用线段树维护矩阵实现转移即可。

G

题意:询问一个串 \(\text{S}\) 是否由若干“中心对称”的串拼接而成。\(\sum|S| \le 5 \times 10^6\)

从前往后枚举前缀的对称中心,\(\text{Hash}\) 判断是否满足条件,满足条件了就把该前缀从原串中去掉,重复上述步骤。

复杂度 \(O(n)\)

完全没难度,为啥过的人这么少

7.24

2023牛客暑期多校训练营3

E

题意:给定 \(n\) 个顶点 \(m\) 条边的有向图,边的边权均为 \(1\),判断以顶点 \(1\) 为根的所有可能的 \(\text{dfs}\) 树是否均为以顶点 \(1\) 为根的最短路树。多组询问。\(1 \le T \le 5 \times 10^5, 1 \le \sum n \le 5 \times 10^5, 1 \le \sum m \le 5 \times 10^5\)

考虑通过 \(\text{bfs}\) 建立分层图,然后分类讨论。首先删掉所有的重边、自环,它们肯定不影响答案。对于一条边 \(u \to v\),若 \(v\)\(u\) 的下一层,这种边没有任何影响。若 \(u\)\(v\) 在同一层,它一定可以在 \(\text{dfs}\) 中被用到,且导致 \(v\) 的距离出错,这时答案会是 “No”。若 \(v\)\(u\) 前面的层,且 \(v\) 不是 \(u\) 的支配点,那么 \(\text{dfs}\) 的时候就可以从 \(1\) 出发,走一条不经过 \(v\) 的路到 \(u\),再走到 \(v\),导致 \(v\) 的距离出错。否则,不论如何从 \(1\) 走到 \(u\) 的时候都已经经过 \(v\) 了,这条边不会影响答案。时间复杂度为 \(O(m \log n)\)

直接搬的题解,赛时几乎写了4h,和题解思路差不多,但就是写挂了。/kk

7.28

2023牛客暑期多校训练营4

J

题意:你需要计算长度为 \(n\) 的满足以下条件的数组 \(a_1,a_2,a_3,...,a_n\) 的个数,对 \(998244353\) 取模:对每个 \(1 \le i \le n\),都有 \(−m \le a_i \le m\)。数组中所有长度不小于 \(2\) 的连续子段中数字之和均非负。\(1 \le n, m \le 5000\)

(说不定假的)结论:数列不满足当且仅当存在一段形如 \(+-,-+,-+-\) 不满足条件。

待补……

A

题意:\(T\) 组数据,每次给定一个 \(01\) 字符串 \(t\) 以及一个正整数 \(n\), 要求构造一个长度为 \(n\)\(01\) 字符串 \(s\), 使得 \(t\)\(t + s + t\) 中仅出现两次。\(1 \le T, n, |t| \le 1000\)

结论:\(s\) 取全 \(0\) 串或全 \(1\) 串至少有一种满足条件。

证明考虑 \(t\) 的最长相同真前后缀,再分类讨论即可。用 \(\text{Hash}\) 判是否可行。

H

题意:输入 \(n\),你要构造一种方案将 \(n \times n\) 的正方形合并成一个大正方形,其中单次合成的正方形个数要在 \(2\)\(50\) 之间。\(1 \le n \le 1000\)

递归处理每一个大正方形。对于当前的正方形 \(\mathbf{A}\),考虑取一个正方形完全覆盖 \(\mathbf{A}\) 的左上角,对于右下的“L”形空余,用大小相同的正方形“L”角,对于剩余的两个长方形(分别在左下、右上)递归处理(类似辗转相除),可以证明每一次操作与操作总数在限制内。

posted @ 2023-07-22 10:10  Semorius  阅读(84)  评论(0)    收藏  举报