Maybe something will cha|

Semorius

园龄:1年9个月粉丝:4关注:10

2023 暑假牛客多校

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

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

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

7.17

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

D

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

数据范围:1n,m109

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

K

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

数据范围: 1n1051m2000001k109

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

H

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

数据范围:1n2000000|ai|,|bi|1012

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

7.21

2023牛客暑期多校训练营2

K

题意:给出一个长度为 n01 串以及每个位置都有权值 ai0。每个 1 最多移动一次且最多移动一位。若一个位置有 1 则可以获得权值。问最大可能的权值和。n106

一开始贪心了半天写的巨长。发现是easy dp 题。

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

答案即为 max(dpn,0,dpn,1)

H

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

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

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

G

题意:询问一个串 S 是否由若干“中心对称”的串拼接而成。|S|5×106

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

复杂度 O(n)

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

7.24

2023牛客暑期多校训练营3

E

题意:给定 n 个顶点 m 条边的有向图,边的边权均为 1,判断以顶点 1 为根的所有可能的 dfs 树是否均为以顶点 1 为根的最短路树。多组询问。1T5×1051n5×1051m5×105

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

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

7.28

2023牛客暑期多校训练营4

J

题意:你需要计算长度为 n 的满足以下条件的数组 a1,a2,a3,...,an 的个数,对 998244353 取模:对每个 1in,都有 maim。数组中所有长度不小于 2 的连续子段中数字之和均非负。1n,m5000

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

待补……

A

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

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

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

H

题意:输入 n,你要构造一种方案将 n×n 的正方形合并成一个大正方形,其中单次合成的正方形个数要在 250 之间。1n1000

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

本文作者:Semorius

本文链接:https://www.cnblogs.com/Semorius/p/17572920.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   Semorius  阅读(57)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起