AGC039

A (Easy 2/0)

模拟即可。

B (Easy 2/0)

若图不是二分图则无解,否则令每个点的标号为其到某个点的距离才可保证相邻点的标号差 =1,所以答案即 maxdu,v

C (Easy 3/1)

sF 表示把 s 每一位翻转后得到的字符串。发现题目的操作等价于一个长度为 n 的滑动窗口在 ssF 上不断向右移动。所以移动 k 次以后回到 s 等价于 ssF 存在长度为 k 的循环节,所以 k2n。但是 kn,因为这样的话这个循环节 r 就要与 rF 相等了,这是不可能的。

于是我们能发现 r 又可以被拆为 ttF,只剩下 X 这一个限制条件了,而这是易于判断的。再加个容斥即可计算答案。

时间复杂度 O(nσ0(n))

D (Medium 4/0)

在这里,你甚至可以学习隔壁 MO 平几。

平几的东西忘光了 /ll/ll

可以通过一些转化和欧拉线证明如下结论:

  • 对于 ABC,其内心坐标即三条边对应的劣弧中点坐标之和。

直接做就可以做到 O(n2);使用和差化积可以优化至 O(n)

E (Medium 5/0)

n=2N,设 fl,r,k 表示仅考虑 [l,r] 内部的点,只有 k[l,r] 外的点连边的方案数,则 [l,r] 中必有跨过 k 那条边的边,又因为其不相交,可以设其中左端点最小、右端点最大的一条为 (x,y),那么 [x,k) 中肯定有一个前缀是首先和 x 连通的、剩下的后缀是首先与 k 连通的;(k,y] 类似。我们设这两个分界点为 p,q,则有转移:

fl,r,kfl,p,xfp+1,q1,kfq,r,y

直接枚举 l,r,k,x,y,p,q,时间复杂度 O(n7),因为极小的常数可以轻松通过。

考虑变换枚举顺序,改为首先枚举 p,q 再枚举 k,则可以使用另一个 dp 优化计算过程,时间复杂度 O(n5)

F (Medium 6/0)

感觉第一步比较难想到,但是好像没有 Au 的难度?

xi=minjai,j,yj=miniai,j,则 f(x,y)=min{xi,yj}。假设我们已经确定了 x,y,考虑寻找一种快速计算权值的方式。

x,y 从小到大排序之后依次考虑每个数。假设在当前的数之前已经有了 u 个来自 x 的数和 v 个来自 y 的数,则

  • 若当前的数 t 来自 x,则它可以限制 v 个数,答案乘以 tmj
  • 若当前的数 t 来自 y,则它可以限制 u 个数,答案乘以 tni

想到这里就基本上比较简单了。我们考虑容斥,即限制变为「第 i 行的最小值 />xi」以及「第 j 列的最小值 />yj」。从小到大添加 x,y,我们考虑设 ft,u,v 表示考虑加入 txy,其中 x 中有 u 个且 y 中有 v 个的所有方案数乘以系数之和,首先考虑加入 x,根据钦定 > 可以得到两种转移:

ft,u+a,v(nua)ta(mj)(kt+1)ajft,u,v

ft,u+a,v(nua)ta(mj)(kt)ajft,u,v

加入 y 的情况类似,注意转移的顺序。

时间复杂度 O(nmk(n+m))

posted @   Scintilla06  阅读(55)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示