20220926 ICPC 网络赛
队长生病了没来,和 wwj 两个人打了一把,过了 8 题,勉勉强强。
A Yet Another Remainder
当 时,根据费马小定理,只需要对前 个位置询问每次跳 步得到的和是多少,单次询问时间复杂度 。当 时,从后往前暴力确定每个数,单次询问时间复杂度 。
B Non-decreasing Array
对于第一步操作,显然是能删就删收益最大,而对于第二步操作,显然是把 改成 或者 收益最大,这也等价于将 删掉。于是问题转化为每次操作可以删掉两个数,问最后的最大收益。设 表示只考虑 这 个数,删掉其中 个数(不能删 和 )时的最大收益即可,时间复杂度 。
G Good Permutation
先考虑没有区间相互包含的情况,即给出的区间都是两两相离的。记给出 个区间,第 个区间的长度为 ,这些区间的总长为 。
考虑如何计算给这些区间分配数的方案数,发现只需要在值域 这个序列上确定第一个区间的位置以及相邻两个区间间隔的距离,再将这些区间确定一个顺序依次放上去即可,方案数为 ,再乘上这些区间外的方案数 与每个区间内部的方案数 。
现在考虑每个区间内部可能还有其他区间的限制,不难发现其他部分方案数是一样的,只需要把 换成每个区间内部的方案数,而这是一个子问题。对每个区间预处理出包含它的最小区间,于是区间加上 形成了一个树形结构,在树上进行一次 dfs 即可算出答案。
H Communication Station
考虑点对 之间的贡献,记它们之间的距离为 ,除掉 到 这条链还有 个点,则贡献为 ,可以写成 的形式,其中 是一个关于 的二次多项式。
考虑 dfs 遍历每个点作为 ,换根的过程中某个子树内的 全部减 1,其余点的 全部加 1,用一棵线段树维护每个点作为 的贡献即可。
J A Game about Increasing Sequences
满足严格上升的取数序列数目不会很多,dfs 爆搜即可。
K Black and White Painting
由于圆和正方形的中心都在整点处,于是两个图形之间有交的情况是有限的,枚举一个图形 ,如果是正方形,将它的边分成 8 份,如果是圆,将它的圆周分成 12 份,再枚举一个其他图形 ,讨论所有情况,检查 的哪些边/圆周会被 覆盖掉,最后考虑了所有图形后仍未被覆盖的部分就是 对答案的贡献。
注意两个正方形可能会出现共用一部分边贡献到答案的情况,可以规定编号小的覆盖掉编号大的,避免重算漏算。
L Quadruple
如果确定了字符 I 的位置与字符 P 的位置,那么它们的贡献只和 C 的个数前缀和有关,将式子拆开后全部用前缀和进行处理即可。具体可以参考 autoint 的博客 。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】