把博客园图标替换成自己的图标
把博客园图标替换成自己的图标end

20220926 ICPC 网络赛

队长生病了没来,和 wwj 两个人打了一把,过了 8 题,勉勉强强。

A Yet Another Remainder

np1 时,根据费马小定理,只需要对前 p1 个位置询问每次跳 p1 步得到的和是多少,单次询问时间复杂度 O(p) 。当 n<p1 时,从后往前暴力确定每个数,单次询问时间复杂度 O(nlogn)

B Non-decreasing Array

对于第一步操作,显然是能删就删收益最大,而对于第二步操作,显然是把 ai 改成 ai1 或者 ai+1 收益最大,这也等价于将 ai 删掉。于是问题转化为每次操作可以删掉两个数,问最后的最大收益。设 dp(i,j) 表示只考虑 1ii 个数,删掉其中 j 个数(不能删 1i )时的最大收益即可,时间复杂度 O(n3)

G Good Permutation

先考虑没有区间相互包含的情况,即给出的区间都是两两相离的。记给出 m 个区间,第 i 个区间的长度为 xi ,这些区间的总长为 s

考虑如何计算给这些区间分配数的方案数,发现只需要在值域 1,2,3,n 这个序列上确定第一个区间的位置以及相邻两个区间间隔的距离,再将这些区间确定一个顺序依次放上去即可,方案数为 m!×(ns+mm) ,再乘上这些区间外的方案数 (ns)! 与每个区间内部的方案数 xi!

现在考虑每个区间内部可能还有其他区间的限制,不难发现其他部分方案数是一样的,只需要把 xi! 换成每个区间内部的方案数,而这是一个子问题。对每个区间预处理出包含它的最小区间,于是区间加上 [1,n] 形成了一个树形结构,在树上进行一次 dfs 即可算出答案。

H Communication Station

考虑点对 (u,v) 之间的贡献,记它们之间的距离为 d ,除掉 uv 这条链还有 m=nd1 个点,则贡献为 d×(m+4)×2m1 ,可以写成 14×P(d)×2nd 的形式,其中 P(d) 是一个关于 d 的二次多项式。

考虑 dfs 遍历每个点作为 u ,换根的过程中某个子树内的 d 全部减 1,其余点的 d 全部加 1,用一棵线段树维护每个点作为 v 的贡献即可。

J A Game about Increasing Sequences

满足严格上升的取数序列数目不会很多,dfs 爆搜即可。

K Black and White Painting

由于圆和正方形的中心都在整点处,于是两个图形之间有交的情况是有限的,枚举一个图形 i ,如果是正方形,将它的边分成 8 份,如果是圆,将它的圆周分成 12 份,再枚举一个其他图形 j ,讨论所有情况,检查 i 的哪些边/圆周会被 j 覆盖掉,最后考虑了所有图形后仍未被覆盖的部分就是 i 对答案的贡献。

注意两个正方形可能会出现共用一部分边贡献到答案的情况,可以规定编号小的覆盖掉编号大的,避免重算漏算。

L Quadruple

如果确定了字符 I 的位置与字符 P 的位置,那么它们的贡献只和 C 的个数前缀和有关,将式子拆开后全部用前缀和进行处理即可。具体可以参考 autoint 的博客

posted @   jklover  阅读(193)  评论(1编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示