gdcpc 2025 游记
已对关键信息进行覆盖(
喜提滚榜第一页倒一,不敌
* 个正式队。队名:*****
A
给定
n \times m 的01 矩阵a_{ij} ,定义点a_{ij} 的权值为A\times i + B\times j 。你可以对任意多行、列进行取反,求最后所有为1 的点的权值之和的最大值。
注意到
然后枚举有哪些列被翻转,假设为
大概通过时间:3h。
通过者:我。
罚时数:3。原因:初始答案开到
-10^{15} ,调到10^{-18} 就过了。做的时候完全没想道答案可以到\frac{n(n-1)}{2} \times A 。/cf
B
给定一个集合
S 和一个数x ,每次你可以选择a, b \in S ,将a (\oplus \text{ or } \otimes \text{ or } \odot) b 加入S 。问你能否在70 步内将x 加入S 。如果能,给构造。数据范围忘了。
不会。
学长在这题交了
9 发没过。
C
初始有一个排列
\{1, 2, \dots, n\} 。定义一次切牌为:
- 将该排列划分成若干子串。
- 将子串任意重排。
- 按顺序依次取每个子串的第一项。
例如,一种
\{1, 2, 3, 4, 5\} 的切牌为:
现有长为
n 的排列p ,查询有多少种\{1, 2, \dots, n\} 的切牌方式可以变成p 。你还要支持
q 次两项 swap,每次修改后输出新的方案数。修改为永久性修改。
观察性质,可以得出以下结论:令
- 第
1 步中,若将排列划分成k 段,则至多一段可以切牌为p ,并且存在k_0 ,使得能否切牌 为p 的必要条件为k \ge k_0 。 - 若
\mathit{pos}_{i + 1} \gt \mathit{pos}_i ,则k_0 \ge \mathit{pos}_i 。 - 若存在
i \not= j ,\mathit{pos}_i \lt \mathit{pos}_j 且\mathit{pos}_{j + 1} \lt \mathit{pos}_{i + 1} ,则k_0 \ge \mathit{pos}_{j + 1} 。
经过暴力验证条件是充要的。只需求出
对于第二个条件,可以使用 set 维护
对于第三个条件,可以视为若干个点
通过时间:没有通过。
想通的时间:4h58m。
成功没通过 C 题。一开始还写了个假做法。/hanx/hanx
D
给定数
n ,你可以花费2^x 的时间让n 减去10^x ,求恰好让n 变为0 的最少时间。范围忘了。
贪心,每次尽量选最大的
大概通过时间:5m。
通过者:@happybob。
一开始 @happybob 为了翻转数组差点写了 sort。
E
有
2 \times n 的网格,每一个格子上有2n 个颜色之一,或者没染色。你要给格子染色,使得颜色四连通块数量最少。1 \le n \le 10^5
不会。
场上没人过。
F
不知道。
不知道。
大概通过时间:40m。
通过者:@Z**。
我连题都没看过,就被人会了。
G
给定
n 个数1 = A_1 \lt A_2 \lt \dots \lt A_n \le 10^6 ,定义f(x, i) :f(x, i) = \begin{cases} f(x \bmod A_i) + \lfloor\frac{x}{A_i}\rfloor & i \gt 1\\ x & i = 1 \end{cases} $1 \le n, q \le 10^6$,$1 \le m \le 10^9$。
考虑对于
大概通过时间:22m。
通过者:我。
由于队友霸占电脑导致痛失首 A
H
给定字符串
S ,求有多少个本质不同的子序列S_{a_1}, S_{a_2}, \dots, S_{a_m} ,使得a_{i + 1} - a_i \gt k 。
不会。
大概通过时间:50m
通过者:@happybob。
就是在写这个题霸占电脑(
I
给定
n 个三元组T_i ,求有多少个数对(i; j, k) 使得存在\{i, j, k\} 的排列\{p_1, p_2, p_3\} ,满足T_{i, x} = T_{p_x, x}, x \in \{1, 2, 3\} 。
不会。
大概通过时间:3h
通过者:@Z**
我一开始想大分讨,但失败了,所幸有队友。
J
给定一个
n 点e 边带权有向图,每个点有一个权值a_i 。若当时刻t 时a_i 第一次变为0 ,则时刻t + w 时a_v 会减去1 ,其中(v, w) 为i 的一条出边。额外还有m 个条件,表示t_i 时刻会将若干个a_i 清零。问每一个点第一次为0 的时间。不存在则为-1。
考虑拓扑排序,将 queue 换成 priority_queue 即可。然后模拟。
大概通过时间:1h
通过者:我
K
给定字符串
S ,对其所有前缀求:对于字符串
T = t_1t_2\dots t_m ,定义其扩展字符串为:t_1t_2\dots t_mt_{m - 1}t_{m - 2}\dots t_1t_2\dots t_mt_{m - 1}\dots 求最短
T 的长度,使得该S 前缀为T 扩展字符串的前缀。\sum |S| \le 10^6
注意到,将
另外,还要额外判断未满一个周期的情况,可以二分哈希然后区间取
注意特判
大概通过时间:**
通过者:@happybob
一开始疑似哈希写挂,喜提 tle 和 wa,后来发现是 ub 了,改完就过了。
L
给定
n \times m 的网格图,你要在边上行走。你初始在(0, 0) ,你最终要达到(n, m) 。你还必须要经过k 个边上的点。不同的边经过所需的时间不同。求最少时间。范围忘了。
1 \le k \le 10^5 。
不会。
场上
0 人通过。
最后亲爱的 @happybob 在每一题都交了一发。我们获得了学校的第二名。
由于要中考了,所以打的很烂(确信。
自认为在策略上没有重大失误,主要还是实力不足。感觉 xcpc 赛制的比赛还是思维题偏多,毕竟可以携带纸质资料。
加训 whk,为以后退役做准备。