首页 > 其他分享 >The 3rd Universal Cup. Stage 9: Xi'an

The 3rd Universal Cup. Stage 9: Xi'an

时间:2024-09-11 22:36:40浏览次数:10  
标签:le log Universal Xi 考虑 相当于 复杂度 dp Stage

A. An Easy Geometry Problem

差分之后条件相当于类似 \(a_{i - 1} + a_i = k + b\) 且 \(a_{i - r + 1} + a_{i + r} = k\) 的条件,线段树维护 \(a_i\) 和 \(k - a_{n - i}\) 的哈希值,查询直接二分即可。

时间复杂度 \(O(n + q \log^2 n)\)。

B. Counting Multisets

考虑 \(p(S)\) 为奇数相当于什么。设 \(i\) 的出现次数为 \(c_i\),那么条件相当于 \(c_i\) 在二进制下不交。其他条件相当于 \(\sum c_i = n\) 且 \(\sum c_i \cdot i = x\)。

拆位,相当于要选一些 \(d_{i, j} \in \{0, 1\}\) 使得 \(\sum\limits_{i \in n} \sum\limits_{j \in y} 2^{i + j} d_{i, j} = x\)。

可以看成是一个 \(\log n \times \log y\) 的 \(01\) 矩阵,使得 \(n\) 为 \(0\) 的那行全是 \(0\),且因为要求全部 \(y \subseteq y_{\max}\) 的答案还要记录当前有哪些列已经有 \(1\) 了。

一行一行或者一列一列地 dp 都不行。考虑按对角线顺序 dp,即按所有格子的 \(i + j\) 大小 dp。然后状态再记一个进位数(这个是 \(O(\log y)\) 级别的),还有当前哪些列已经有 \(1\)。

时间复杂度 \(O(2^{\text{pcnt}(y_{\max})} \log n \log^2 y)\)。

C. Counting Strings

看到数本质不同子串直接上 SAM。对于 SAM 上的一个点 \(u\),设其 endpos 集合为 \(E\),代表子串长度范围为 \([L_u, R_u]\),则其贡献为:

\[\sum\limits_{i = L_u - 1}^{R_u - 1} [\exists x \in E, \gcd(x, i) = 1] (i + 1) \]

考虑枚举每个 \(i\) 算贡献。相当于对于所有 \(\gcd(x, i) = 1\) 的 \(x\),设 \([1, x]\) 在 SAM 上对应点 \(u\),那么可以覆盖 \(u\) 到根的链上所有点,最后所有被覆盖的点的个数乘 \(i + 1\) 就是贡献。

\(\gcd(x, i)\) 的 \(x\) 的个数很多,不能暴力枚举。可以考虑去搜 \(i\) 的质因数集合,一开始把所有点加入一个集合,每搜过一个质数就把它的倍数全部从集合删去。删一个数 \(u\) 要做的操作是,找到它最浅的祖先 \(v\) 使得当前 \(v\) 子树内只有一个未被删的点 \(u\) 了,然后把 \(v\) 到 \(u\) 链上所有点的 \([L_u - 1, R_u - 1]\) 都减 \(1\)(因为树上祖先到儿子的长度范围连续,所以这部分直接找到对应的 \([l, r]\) 然后直接减即可)。因为要平衡复杂度所以区间加单点查可以转化成单点加前缀查然后做 \(O(1) - O(\sqrt n)\)。

现在剩下一个问题:如何找到最浅的祖先 \(v\)。考虑找到 \(u\) 在 dfs 序上的前驱后继,取 \(u\) 和它们 LCA 的较深点即可。这部分可以使用链表维护。

于是总时间复杂度 \(O(X + n \sqrt n)\),\(X\) 为每个点被删除次数的总和。实际上 \(O(\text{可过})\)。

D. Bracket Sequence

先考虑第一种询问。把询问挂到猫树上,对前缀和后缀 dp,状态记录选了多少个括号,还有上一个选的括号类型。

考虑第二种询问。对每个子序列拆贡献,设子序列范围为 \([L, R]\),询问区间为 \([l, r]\),这个子序列的贡献就是 \((L - l + 1)(R - r + 1)\)。拆贡献,相当于要计算 \(LR\) 的和,\(L\) 的和,\(R\) 的和。dp 的时候可以再记一维状态表示是否已经选了子序列的左/右端点。

时间复杂度 \(O(nk \log n + qk)\)。

E. Dominating Point

首先出度最大的点 \(u\) 一定是支配点,因为不存在它的一个前驱能到达这个点以及它的所有后继。

如果 \(u\) 能到达所有点那么其他点一定不是支配点。否则找到它的前驱形成的子图的支配点,则这个支配点 \(v\) 也是整个图的支配点。

如果 \(v\) 在子图中不能到达所有点那么对其在子图中的前驱如法炮制即可找到第三个支配点(相当于递归解决)。

否则找到 \(u\) 的后继去掉 \(v\) 的后继的子图的支配点,那么它也是整个图的支配点。

时间复杂度 \(O(n^2)\)。

F. An Easy Counting Problem

相当于要选 \(k\) 个 \(\binom{a}{b}\) 使得其乘积在模 \(p\) 意义下为 \(x\)。

设 \(\binom{a}{b} \equiv t \pmod p\) 的个数为 \(g_t\)。考虑 dp,转移形如 \(f'_x g_y \to f_{xy \bmod p}\)。套路地取 \(p\) 的原根,化乘为加,有 \(f'x g_y \to f_{(x + y) \bmod p}\)。发现这是一个类似循环卷积的东西,相当于要求一个多项式的 \(k\) 次循环卷积。直接快速幂即可。

时间复杂度 \(O(p \log p \log k)\)。

G. An Easy Math Problem

首先不考虑 \(p \le q\) 的限制。考虑 \(n\) 的一个质因子的次数为 \(c\),那么 \(r\) 的这个质因子的次数能取到 \([-c, c]\)。考虑 \(p \le q\) 相当于把 \(r < 1\) 都删掉,所以答案就是 \(\frac{1 + \prod (2c + 1)}{2}\)。

时间复杂度 \(O(\sqrt n)\)。

H. Elimination Series Once More

建出二叉树,相当于求每个点 \(u\) 最浅的祖先使得子树内比 \(u\) 大的值的个数不超过 \(k\),且子树大小 \(\le u\)。容易归并求出 \(f_{u, i}\) 表示 \(u\) 的 \(i\) 级祖先的子树内有多少个比 \(u\) 大的数。

时间复杂度 \(O(n 2^n)\)。

I. Max GCD

考虑枚举 \(\gcd\) 找支配对 \((i, k)\),然后二维数点即可。

找支配对可以枚举 \(i\),钦定 \(j\) 为 \(i\) 下一个是当前枚举的 \(\gcd\) 的倍数的位置,然后二分 \(k\)。

时间复杂度 \(O(nd \log n + q \sqrt n)\)。

J. Graph Changing

经过一次操作后图上任意两个非孤立点的点距离 \(\le 3\),所以 \(k \ge 4\) 且 \(t \ge 2\) 就直接无解。

特判 \(t = 1\)。

发现 \(k = 3\) 且 \(n \le 7\) 的情况有一点特殊,要暴力特判。

\(t \ge 2\) 且 \(n \ge 8\) 且 \(k = 3\) 就是无解。

剩下 \(k = 2\) 且 \(n \ge 2\) 的情况(注意特判 \(n = 3, 4\)),显然操作奇数次后图会变成 \(G_0\) 的补图,操作偶数次后图会变成 \(G_0\)。

时间复杂度 \(O(q)\)。

K. Penguins in Refrigerator

先考虑第二问,设 \(p_i\) 为第 \(i\) 只企鹅进入的时间。建一个 DAG,若 \(p_i > p_j\) 且 \(a_i + a_j > m\) 就连 \(i \to j\),然后相当于求这个 DAG 的最小拓扑序。cdq 分治优化建图即可。

再考虑第一问。设 \(p = \operatorname{argmax} a_i\),那么 \(a_i + a_p \le m\) 的点 \(i\) 可以随意交换,删除它们之后相当于变成了 \(p\) 左边和 \(p\) 右边的两个子问题。

考虑这个东西的本质,相当于是建出大根笛卡尔树后,给每个点 \(u\) 找一个最浅的祖先 \(p\) 使得 \(a_u + a_p \le m\)。可以把 \(u\) 挂到 \(p\) 上,dfs 算一个类似子树大小的东西,考虑到每个点就乘一个挂在它上面的点随意选位置的系数即可。

时间复杂度 \(O(n \log n)\)。

L. Prism Palace

考虑凸包每条边成为 \(S\) 的最大值且等于剩下数总和的概率。相当于这条边的投影要把整个凸包以及其他阴影全部覆盖。

设一条边相邻两个内角分别为 \(\alpha, \beta\)。首先必须满足 \(\alpha + \beta \le \pi\),不然它覆盖不了整个凸包。然后平移后的多边形要在它的两条邻边所在直线相交形成的区域内,概率为 \(\frac{\pi - \alpha - \beta}{\pi}\)。枚举每条边并对这个东西求和即可。

时间复杂度 \(O(n)\)。

M. Random Variables

容斥,算全部数出现次数 \(\le k\) 的方案数。

可以把现在的问题抽象成,\(n\) 个互相区分的小球放入 \(m\) 个互相区分的盒子,且每个盒子大小 \(\le k\) 的方案数。

设 \(f_{i, j}\) 为 \(n = i, m = j\) 时上述问题的答案。考虑第 \(i\) 个球,对其所在盒子容斥,要么随便找一个盒子放,要么放到了一个大小为 \(k + 1\) 的盒子内(即它新开了一个超出限制的盒子)。有转移 \(f_{i, j} = f_{i - 1, j} \times j - f_{i - k - 1, j - 1} \times \binom{i - 1}{k} \times j\)。初值为 \(\forall i \in [0, m], f_{0, i} = 1\)。

发现只有满足 \(j \ge m - \frac{n}{k + 1}\) 的 \(j\) 才会对最终的 \(f_{n, m}\) 有贡献。所以 dp 第二维只有 \(O(\frac{n}{k})\) 个取值。枚举每个 \(k\) 并做 \(O(\frac{n^2}{k})\) 的 dp,复杂度就是 \(O(n^2 \ln n)\)。

N. Python Program

没有人喜欢这种题。

标签:le,log,Universal,Xi,考虑,相当于,复杂度,dp,Stage
From: https://www.cnblogs.com/zltzlt-blog/p/18409160

相关文章

  • The 3rd Universal Cup. Stage 8: Cangqian
    C.ChallengeNPC考虑构造一个二分图,左边是\(1,3,5,7\)右侧是\(2,4,6,8\)。最优解肯定是一边全1,一边全2。如果\(1,2\)之间不连边,这\(2\)就会被染色为1,因此只要让\(2,3\)连边,\(3\)会被染色为\(2\),然后\(1,4\)连边,\(4\)也会被染色为\(5\),这时只要让\(2,5\)和\(4,5\)连边,\(5\)就......
  • axios 下载文件流
    exportOrder(){letthat=thisletdata={page:that.page,status:that.status,q:that.searchData}axios.post(`/jmarket/admin/v1/order/export`,data,{respon......
  • FastGPT一站式解决方案[1-部署篇]:轻松实现RAG-智能问答系统(含sealos云端部署、docker
    FastGPT一站式解决方案[1-部署篇]:轻松实现RAG-智能问答系统(含sealos云端部署、docker部署、OneAPI&Xinference模型接入)FastGPT是一个功能强大的平台,专注于知识库训练和自动化工作流程的编排。它提供了一个简单易用的可视化界面,支持自动数据预处理和基于Flow模块的工作流编排。Fas......
  • VMware ESXi 8.0U3 macOS Unlocker 集成驱动版更新 OEM BIOS 2.7 支持 Windows Server
    VMwareESXi8.0U3macOSUnlocker集成驱动版更新OEMBIOS2.7支持WindowsServer2025VMwareESXi8.0U3macOSUnlocker&OEMBIOS2.7集成网卡驱动和NVMe驱动(集成驱动版)发布ESXi8.0U3集成驱动版,在个人电脑上运行企业级工作负载请访问原文链接:https://sy......
  • 基于Axis 1.4的Web Service入门
    最近有个客户使用的是Axis1.4创建的WebService,很久没用了,所以整理下这块的知识。基于JDK1.8和EclipseMars开发一个简单的HelloworldWebServicepublicinterfaceHelloService{ Stringhello(Stringname);}publicclassHelloServiceImplimplementsHelloService{......
  • PLC结构化文本(ST)——FB系统内置方法(Init、exit、reinit)
    PLCStructuredTextObjectOrientedProgrammingPLC结构化文本(ST)——FB系统内置方法(Init、exit、reinit)IEC61131-3FB系统内置方法FB_init隐式或显式初始化功能块,第一次下载运行程序时初始化时自动调用。该方法类似于C#类的构造函数,用于初始化类。FB_exit在功能块被销毁时......
  • 使用 nuxi upgrade 升级现有nuxt项目版本
    title:使用nuxiupgrade升级现有nuxt项目版本date:2024/9/10updated:2024/9/10author:cmdragonexcerpt:摘要:本文介绍了如何使用nuxiupgrade命令升级Nuxt3项目,包括打开终端、运行升级命令、使用选项、测试项目等步骤,以及升级前的注意事项,如备份代码、检查文......
  • 使用 nuxi upgrade 升级现有nuxt项目版本
    title:使用nuxiupgrade升级现有nuxt项目版本date:2024/9/10updated:2024/9/10author:cmdragonexcerpt:摘要:本文介绍了如何使用nuxiupgrade命令升级Nuxt3项目,包括打开终端、运行升级命令、使用选项、测试项目等步骤,以及升级前的注意事项,如备份代码、检查文......
  • 使用 nuxi upgrade 升级现有nuxt项目版本
    title:使用nuxiupgrade升级现有nuxt项目版本date:2024/9/10updated:2024/9/10author:cmdragonexcerpt:摘要:本文介绍了如何使用nuxiupgrade命令升级Nuxt3项目,包括打开终端、运行升级命令、使用选项、测试项目等步骤,以及升级前的注意事项,如备份代码、检查文档和依......
  • Esxi 修改时区
    在尝试修改/etc/localtime文件时遇到“Operationnotpermitted”错误,这通常是因为ESXi的文件系统是只读的。在这种情况下,您需要通过修改配置文件来更改时区。请按照以下步骤操作:方法一:使用vSphereClient使用vSphereClient连接到您的ESXi主机。导航到“配置”>“系统”>“......