当前位置: 首页 > news >正文

The 4th Universal Cup. Stage 22: Grand Prix of Kyoto(无 HK)

A. Kendama Challenge

对于存在一段的限制,考虑容斥,变为 \(1\) 减去不存在任何一段的概率。

考虑没成功的选手,需要相邻的选手距离 \(\le K\) 才合法。

于是设 \(f_i\)\(i\) 是没成功的选手,且 \([1, i]\) 满足条件的概率。
转移即为 \(f_i = (1 - p_i)\sum\limits_{j = i - k}^{i - 1} f_j\prod\limits_{h= j + 1}^{i - 1}p_h\)

\(\prod\) 拆成前缀积形式,对于 \(\sum\) 类似滑动窗口维护即可。

时间复杂度 \(\mathcal{O}(n\log n)\)

submisson。

B. Cat Cut

分析答案结构。

对于每次的截断,可以看作是保留了 \(s_i\) 的一个前缀直接拼在了当前串后,直到最后再保留下最后 \(m\) 个字符。

于是能分析出可能的结构(以下中的任一元素也可以是空串):

  • \(\operatorname{suf}(s_1) + \operatorname{pre}(s_2) + \cdots + \operatorname{pre}(s_n)\)
  • \(\operatorname{substring}(s_i) + \operatorname{pre}(s_{i + 1}) + \cdots + \operatorname{pre}(s_n)(i\ge 2)\)

刻画一下可能的转移路线,此处记第 \(i\) 个字符串的第 \(j\) 个字符为 \((i, j)\),转移如下:

  • \((1, i)\to (1, i + 1)(i < m)\)
  • \((1, m)\to (i, 1)(i\ge 2)\)
  • \((i, j)\to (i, j + 1)(j < m)\)
  • \((i, j)\to (i', 1)(i' > i)\)

转移路线就可以认为是 \((i, j)\) 的下一个字符和之后的所有开头(这个转移对 \((1, i)(i < m)\) 不成立)。

对于字典序最小,考虑直接从前向后贪心选能选的最小的字符,只需维护可选的下标集合,在每次选出一个字符后和准备选下一个字符前更新集合元素即可。

bitset 做这一个过程,对于最小字符直接二分判断有无交,可以做到 \(\mathcal{O}(\frac{nm^2\log |\Sigma|}{w})\),这居然是能过的,,

submisson。

C. Partition AND/OR Aggregation

对于 \(S(l, r) = \frac{\operatorname{And}(l, r)}{\operatorname{Or}(l, r)}\),如果固定 \(l\) 来看,那么 \(S(l, r)\) 可能的取值只有 \(\mathcal{O}(\log V)\) 种(对于 and 每次改变至少少 1 位,对于 or 每次改变至少多 1 位)。

这也说明答案的取值也只有 \(\mathcal{O}(n\log V)\) 种。

先来考虑求 \(\max\)

首先有一个贪心的想法,就是选 \(k - 1\) 个长度为 \(1\) 的段,剩下直接分一段,于是 \(k < m\) 时答案肯定为 \(1\)

接下来考虑 \(k = m\),排序后最小的段为 \(v\),这就说明所有段都需要 \(\ge v\),于是考虑二分答案 \(v\)

因为 \(S(l, r)\le S(l + 1, r), S(l, r - 1)\),这说明若 \(S(l, r)\ge v\)\(l < r\),那么随意分裂 \([l, r]\) 这个区间,\(S\) 值一定也都 \(\ge v\)
这说明 \(\ge v\) 的段数一定是受到一个区间的约束的,上界是 \(n\),只需关注下界了。
下界是好办的,每次尽可能扩张的更远即可,因为这相当于是让接下来的一个段前面没有了附加值,一定不劣。

于是 \(\max\) 就在 \(\mathcal{O}(n\log (n\log V))\) 的复杂度内解决了。

接下来考虑 \(\min\)

此时 \(k\)\(m\) 的大小就没有什么特殊性了。

类似 \(\max\),考虑二分答案 \(v\),那么限制就是要有 \(m - k + 1\) 个段的值 \(\le v\),并且总共至少需要有 \(m\) 个段。

如果没有总共 \(m\) 个段的限制,这是好做的。

考虑对于每个 \(l\) 根据 \(S(l, r)\) 不同分出的 \(\mathcal{O}(\log V)\) 个段,那么就可以找到 \(S(l, r)\le v\) 的最小的 \(r\),记为 \(r_l\)
直接考虑 dp,记 \(f_l\) 表示 \([l, n]\) 能够划分出的 \(S \le v\) 的段数的最大值,转移为 \(f_l = \max(f_{l + 1}, f_{r_l + 1} + 1)\),直接判断 \(f_1\)\(m - k + 1\) 的大小即可。

现在的问题就是总段数的限制,贪心的考虑,除了钦定为 \(\le v\) 的段,其他的元素肯定都是单独划段最优。

这其实也就是最小化选出的 \(m - k + 1\) 个段的总长,若总长 \(\le n - (k - 1)\),就可以选出至少 \(k - 1\) 个单段,也就满足了限制。

于是问题转化为,求出选出 \(m - k + 1\)\(S\le v\) 的段的最小总长。

考虑记 \(f(i)\) 为选出 \(i\)\(S\le v\) 的段的最小总长,感性理解一下 \(f(i)\to f(i + 1)\) 的过程,每次 \(f(i + 1) - f(i)\) 一定是不降的,也就是 \(f(i)\) 应该是个凸函数。

于是使用 wqs 二分,内部转移与上文的 \(f_l\) 基本一致,得到 \(f(m - k + 1)\) 的值即可。

时间复杂度 \(\mathcal{O}(n(\log n + \log V)\log (n\log V))\)

submission。

D. Campaign Speech

经过手玩可以知道行走路线一定是从一个点开始直接顺着边界走直到走完所有点。

所以长度就是选择路线上相邻的两个点,除这两个点间剩下的边都要走,那也就是找到两点间距离的最大值。

可以考虑以一个点为原点,求出所有点的相对距离。

在沿着边界走的时候判断这条边是横边还是竖边,对于每一行每一列分别用 set 维护之中的点即可。

时间复杂度 \(\mathcal{O}((n + m)\log n)\)

submission。

E. Ball Dumping Golf

\(m = 1\) 时,整个图由许多环组成,最小操作数即为环数。
于是类比到 \(m > 1\) 的情况,此时的每个点都满足入度出度均为 \(m\),所以每个连通块都能找到一条欧拉回路,最小操作数即为连通块数。

那么考虑求出 \(f_i\) 表示 \(i\) 个点恰好成一个连通块的方案数。

这不太好直接求,考虑对其 EGF 求 exp 后得到的 \(G(x) = \exp(F(x))\)
\(g_i\) 表示的是 \(i\) 中有若干个连通块的方案数,也就是这 \(i\) 个点的 \(mi\) 条入边出边都是这 \(i\) 个点的方案数,于是可知 \(g_i = \frac{(mi)!}{(m!)^i}\)

\(G(x)\)\(\ln\) 后即可得到 \(F(x)\),也就得到了 \(f_i\)

对于统计答案,考虑对每个连通块单独统计贡献,枚举大小为 \(i\) 的连通块,方案数即为 \(f_ig_{n - i}\binom{n}{i}\)

时间复杂度 \(\mathcal{O}(nm + n\log n)\)

submission。

F. 1e16 Cities

因为式子中既有 \(\operatorname{lcm}(i, j)\) 也有 \(\gcd(i, j)\),这启发去换元。
\(i = i'd, j = j'd(\gcd(i', j') = 1)\),式子变为 \(di'j' = Ad + B\)

那么经过一些等式变换,能得到以下两个式子:

  1. \(d = \frac{B}{i'j' - A}\)
  2. \(i'j' = A + \frac{B}{d}\)

第一个式子说明了 \(d\) 一定需要是 \(B\) 的因数,第二个式子说明了固定 \(d\)\(i'j'\) 也就固定了。

因为值的大小是 \(10^8\) 级别的,因数个数不多,直接枚举 \(d\) 后枚举 \(i'\) 判断 \((i', j')\) 是否合法即可。

时间复杂度 \(\mathcal{O}(d(V)(\sqrt{V} + d(V)\log V) + (d^2(V) + q)\log (d^2(V) + q))\),其中 \(V = 10^8\)

submission。

G. The Symbolic Tree

\(f_{u, i}\) 表示 \(u\) 当前填的数是 \(i\) 的方案数,转移即为 \(f_{u, i} = \prod\limits_{v\in \operatorname{son}(u)} \sum\limits_{j = 1}^i f_{v, j}\)

这样做只能做到 \(\mathcal{O}(nk)\)

考虑另一个 dp,记 \(f_{u, i}\) 表示 \(u\) 子树满足条件且填了 \(i\) 种不同的数的方案数。
这样虽然只能做到 \(\mathcal{O}(n^3)\),但是这其实说明了答案最后可以表示为 \(\sum\limits_{i = 1}^n f_{1, i}\binom{k - 1}{i - 1}\),也就是答案一定是一个 \(n - 1\) 次的多项式。

直接插值即可。

时间复杂度 \(\mathcal{O}(n^2)\)

submission。

I. Xor Magic Square

偶数的情况是简单的,\(n^2\) 个元素都为 \(1\) 即可。

对于奇数的情况,因为 \(n\) 为奇数,所以不能只是构造 \(1\oplus 1 = 0\) 这种“消除”,就需要引入奇数个数的“消除”,就是 \(1\oplus 2\oplus 3 = 0\)

于是只对于行分析,每一行的和至少为 \(n + 3\)\(n - 2\)\(1\)\(1\)\(2, 3\)),答案就有下界 \(n(n + 3)\)

写个搜索会发现 \(n = 5\) 直接搜出来了一个合法解:

1 1 1 2 3
1 1 2 3 1
2 1 3 1 1
3 2 1 1 1
1 3 1 1 2

对于 \(n\) 更大的情况,自然的考虑增量构造,具体的,对于 \(n\to n + 2\),只需增添如下边框即可:

2 1 ... 1 3
1         1
.         .
1         1
3 1 ... 1 2

对于 \(n = 1\),显然无解。
对于 \(n = 3\),考虑独立开每一位,只分析 \(01\) 的情况,会发现 \(a_{2, 2}\) 始终为 \(0\),于是无论如何组合 \(a_{2, 2}\) 始终为 \(0\),无解。

submission。

J. Sum of max of iai

考虑 \(x = \sum\limits_{i = 1}^{n^2} [x\ge i] = n^2 + 1 - \sum\limits_{i = 1}^{n^2} [x\le i]\)。(这里转成 \([x\le i]\) 的原因是 \(f(a)\) 的求法是取 \(\max\)。)

于是可以先让答案为 \(n!(n^2 + 1)\),再枚举 \(x\),减去 \(f(a)\le x\)\(a\) 的数量。

\(f(a)\le x\) 说明 \(\max (i a_i)\le x\),也就说明 \(\forall i, ia_i\le x\),就能得到 \(a_i\le \lfloor\frac{x}{i}\rfloor\)

因为 \(\lfloor\frac{x}{i}\rfloor\le \lfloor\frac{x}{i - 1}\rfloor\),这说明 \(a_i\) 的限制是具有“包容性”的,也就是说,按照 \(i\)\(n\)\(1\) 去选择 \(a_i\) 的值即可,方案数即为 \(\prod\limits_{i = 1}^n (\min(n, \lfloor\frac{x}{i}\rfloor) - (n - i))\)

考虑到 \(\forall i, \min(n, \lfloor\frac{x}{i}\rfloor)\) 的取值只会有 \(\mathcal{O}(n)\) 次变化,整个式子的值也就只有 \(\mathcal{O}(n^2)\) 次变化。

只需要预处理好 \(1\sim n\) 的逆元,\(x\)\(n^2\)\(1\) 过程中 \(\mathcal{O}(1)\) 修改每一个变化,即可做到 \(\mathcal{O}(n^2)\)

对于找到需要的变化,可以直接把 \(\mathcal{O}(n^2)\) 个变化用桶排直接排好。

时间复杂度 \(\mathcal{O}(n^2)\)

submission。

L. Make Many KUPC

根据 \(x_1 < x_2, y_1 < y_2, x_1y_1 + x_2y_2 > x_1y_2 + x_2y_1\),过程中肯定是让尽量大的 KUPC 匹配在一起。

于是直接倒着维护当前的 KUPC,UPC,PC,C,每次加入一个字符就和最大的能够匹配的后缀合并,此时大小顺序也已经保证(先加入的比后加入的大),直接用队列维护即可。

submission。

M. Linked VERSE

对于 \(x \gets \max(x - c, 0)\),直接当作 \(x\gets x - c\) 并且此时多了一个为 \(0\) 的值。

于是答案就可以表示为:从开头或是 \(a_i = -1\)\(i + 1\) 以值为 \(0\) 出发,经过 \(a_i\ge 0\)\(+a_i\),经过 \(a_i = -1\)\(-c\) 的最大值。

再进一步考虑,如果 \(a_{i} = -1, a_{i + 1} \ge 0\),则如果从 \(i + 2\) 开始肯定不比从 \(i + 1\) 开始优。

于是可以把起点给扩展到任意位置,也就是说答案就是 \(a_{i} = -1\) 则替换为 \(a_i = -c\) 的最大子段和(包含空子段)。

那么为了找到所有子段的信息,考虑分治。

对于 \(l = r\) 的边界是简单的,此时对应的就是 \(-c\) 或者 \(a_i\)

对于 \(l < r\),此时就是找到中点 \(p\),要得到左端点在 \([l, p]\),右端点在 \((p, r]\) 的子段信息。

因为此时的答案形态就是 \(k(-c) + b\) 的形式,这启发去维护凸包以减少信息量。
于是对于左端点只需要维护所有 \([l, p]\) 的后缀信息的凸包,对于右端点同理维护所有 \((p, r]\) 的前缀信息的凸包,合并时就是凸包合并。

最后求答案时只需要把之前得到的所有可能在凸包上的元素再跑一次凸包即可,可以离线下来做也可以在线直接二分斜率。

时间复杂度 \(\mathcal{O}(n\log n + q\log q)\)

submission。

N. Cellular Component Constellation

\(m\) 卡一个最基本的界:因为每个颜色的连通块大小种类有 \(m\) 种,那么需要的格子数至少就是 \(\frac{m(m + 1)}{2}\),2 个颜色需要的格子数至少就是 \(m(m + 1)\),所以 \(m \ge n\) 时无解。

于是来考虑界最紧的情况:\(m = n - 1\)

因为此时只需要 \(n(n - 1)\) 个格子,于是考虑再卡紧一点,尝试找到只需要 \(n(n - 1)\) 个格子的解。

那此时如果每个连通块都是平铺的形状看着就不太好构造了,于是尝试把每个连通块做成一个拐角的样子:

.#.
##.
...

会发现此时就能构造出 .\(1, 5\cdots\)#\(3\cdots\)
那要构造出 .\(3\cdots\)#\(1, 5\cdots\),就只需要对称过去了:

.#.#.#
##.#..
...###

那对于偶数,很简单的想法就是奇数 \(\pm 1\),于是再对称一下,就有了以下构造(分别对应 \(n = 6, 5\)):

.#.#.# .#.#.#
##.#.. ##.#..
...### ...###
###... ###...
..#.## ..#.##
#.#.#.
#.#.#.

那么接下来就只需要把 \(m\times (m + 1)\) 扩充到 \(n\times n\) 了。

这个时候为了不影响已有的结构,考虑每次增量一行或者时一列,都与相邻的行 / 列的元素对应不同。

会发现此时增量的连通块大小至多为 \(2\),且当 \(m = 1\) 时只会有大小为 \(1\) 的连通块,构造成立。

submission。

O. Xor Triangle

注意到 \(x \oplus y = x + y - 2(x\ \&\ y)\le x + y\)\(y = x \oplus (x\oplus y)\le x + (x\oplus y)\),所以考虑容斥 \(x + y = x\oplus y, x + (x\oplus y) = y, y + (x \oplus y) = x\) 三种不合法的情况。

考虑拆位,每一位有 \(4\) 种情况:000, 011, 101, 110。总方案数即为 \(4^n\)

\(x + y = x\oplus y\) 时,每一位就只能是 000 或 011 或 101。剩下两种情况同理,不合法的方案数即为 \(3\times 3^n\)

但是若 \(x, y, x \oplus y\) 中有 \(0\) 时,上述等式就会有 \(2\) 个成立。假设若 \(x = 0\),则每一位只能是 000 或 011,剩下两种情况同理,于是还要加上 \(3\times 2^n\)

还有当 \(x, y, z\) 都为 \(0\) 时,上述 \(3\) 个等式都成立,所以需要 \(-1\)

最后答案即为 \(4^n - 3\times 3^n + 3\times 2^n - 1\)

时间复杂度 \(\mathcal{O}(\log n)\)

submission

http://www.jsqmd.com/news/651712/

相关文章:

  • 别再手动试错了!用Excel单变量求解,5分钟搞定盈亏平衡点计算
  • day15 反射
  • 【生成式AI安全审计黄金标准】:20年攻防专家首次公开7大必查维度与实时风险拦截清单
  • html标签如何正确闭合_self-closing标签注意事项【介绍】
  • “钱袋子”被管好了!融智天合同管理系统应收统计功能实测 - 业财科技
  • iOS Runloop 深度解析
  • AWD Watchbird:PHP Web应用防火墙终极防护指南
  • 官方认证|2026年青岛七大正规豆包优化公司排名,余音智能综合实力遥遥领先 - 十大品牌榜
  • 多商户电商系统接入LINE Pay实战:从沙盒申请到退款流程的完整避坑指南
  • C语言第四节 字符和字符串和ASCII编码串
  • SAP FI 实战:从零到一构建企业核心科目表(COA)
  • #官方认证|2026年国内六大正规测厚仪公司排名,广东佛山等地覆盖,巢目科技技术实力遥遥领先 - 十大品牌榜
  • 融智天合同管理系统与预算管理融合体验 - 业财科技
  • 做一物一码要花多少钱才能做:先算清成本,再看长期回报
  • 官方认证|2026年青岛七大正规GEO优化公司排名,余音智能综合实力遥遥领先 - 十大品牌榜
  • 如何用AlwaysOnTop实现终极窗口置顶:免费效率提升完整指南
  • #官方认证|2026年国内六大正规X射线测厚仪公司排名,广东佛山等地巢目科技技术实力遥遥领先 - 十大品牌榜
  • 你的AI助手偷偷在学什么?这个浏览器仪表盘扒光了AI的脑子
  • 别再让图片变形了!Qt中QLabel显示图片的三种自适应方案实战(附完整代码)
  • 2026.4.15:超详细无人值守Ubuntu-Server安装保姆级教程
  • Abaqus子程序调试:如何在Visual Studio中高效单步追踪变量变化(2024最新版)
  • CSS如何通过Emotion管理样式加载顺序_处理组件优先级问题
  • C#怎么实现EF Core迁移 C#如何用Entity Framework Core进行数据库迁移和更新表结构【数据库】
  • 内网服务HTTPS化实战:除了mkcert,我们还需要注意什么?(含Nginx/IIS配置与客户端证书分发避坑指南)
  • SITS2026 AI面试模拟器深度拆解(训练数据/反馈闭环/岗位适配度三重验证)
  • 英雄联盟玩家必备的智能工具箱:5个核心功能提升你的游戏效率
  • 突破百度网盘限速壁垒:baidu-wangpan-parse工具实战指南与生态整合
  • WebLogic 10.3.6高危漏洞(CVE-2020-14750)实战修复指南:从补丁获取到验证的全流程解析
  • 让 AI 帮我读代码:一次 Nexent 编程助手实践
  • 告别卡顿与臃肿:Dell G15散热控制终极解决方案tcc-g15深度评测