GDKOI 2024 题解 (坑:D1T3)

鸽了一些题。

匹配

先抽出来一个完美匹配,然后尝试调整。
调整相当于:找一个偶环,满足匹配的边和未匹配的边交错,且偶环的总异或和为 0,是不是写个暴力就好了?
发现冲过去了,很牛逼,复杂度 O(n3)(?),Code

不休陀螺

一个区间可以被打出的条件是:

  • Δi=biai,则 x=Δi0,令 y=Δi[Δi<0]
  • Δi<0,Eai+yΔi0
  • Δi0,E+yai0

考虑扫描线,对区间右端点向右移动,考虑如果这个右端点 Δ<0,左端点肯定可以往后走,Δ>0,丢掉它对二三两个条件没什么影响。
使用 ST 表分开维护 Δ<0bi 最大值,Δ>0ai 最大值,即可双指针得到满足 2,3 的最大的 r 的位置,对于条件 1 直接数点即可,O(nlogn)Code
哈哈傻逼题写了这么久。

计算

首先有 gcd(xa1,xb1)+1=xgcd(a,b)
于是 L,R 可以很快的计算得到,但是区间是很大的,但是发现区间内的数 modm 之后是有长度为 m 的循环节的,令循环节的个数为 n=(RL+1)/m,则答案对应的多项式是:

i=0m1(1+xi)n

答案也就是这个多项式的 km 项系数之和,套路的,施单位根反演:

1mj=0m1i=0m1(1+ωmij)n

对于 i=0m1(1+ωmij),发现此时按 j 为步长存在一个大小为 gcd(j,m) 的剩余系,令 d=gcd(j,m),则这个东西就是 i=0m/d1(1+ωm/dij/d)d,此时 j/d 的若干倍恰好遍历所有的 m/d,可以省去,枚举 d,则有:

1md|mj=0m1[gcd(m,j)=d](i=0m/d1ωm/di+1)dn=1md|mφ(m/d)(i=0m/d1ωm/di+1)dn

对于方程 zm1=0m 个解 ωm0,ωm1,,ωmm1,故 zm1=i=0m1(zωmi)。取 z=1 得到 (1)m1=i=0m1(1ωmi)
对于 2|m,发现答案一定是 0,对于 m 为奇数,有 i=0m1(ωmi+1)=2
于是即求:

1md|mm/dmod2=1φ(m/d)2nd

直接暴力枚举 m/d 即可,因为会及时剪枝掉偶数,所以很快的,Code

染色

单位操作是染一个十字架,于是考虑一下这个东西可以构造出什么样的有用操作。
一个想法是在十字架的四端叠合一个十字架,手摸一下发现得到了一个更大的十字架。
定义:k 阶十字架表示 (i,j),(i+2k,j),(i2k,j),(i,j2k),(i,j+2k),可以发现在 k 阶十字架的所有非中心点再叠合一个 k 阶十字架,可以得到 k+1 阶十字架。
发现对于 n1 阶十字架,i+2n1i2n1(mod2n),所以对于每个点构造 n1 阶十字架即可。
于是倒着枚举阶数,对每个位置扫一下需要构造的下一阶十字架就行了,O(n4n),从这个构造也会发现是一定有解的,Code

posted @   cnyz  阅读(138)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示