【学习笔记】AGC046
C - Shift
首先问题转化为,给定一个串 t t t,问 s s s经过最少多少步能变成 t t t
然后考虑逆向操作,每次相当于把一个 0 0 0前面的 1 1 1移动到后面去
记 c i c_i ci表示第 i i i个 0 0 0和第 i + 1 i+1 i+1个 0 0 0之间的 1 1 1的数目,显然两个串相同等价于 { c i } \{c_i\} {ci}相同,并且每次操作相当于选择 i < j i<j i<j,使得 c i c_i ci减 1 1 1, c j c_j cj加 1 1 1
记 s i = ∑ a i s_i=\sum a_i si=∑ai,显然答案是 ∑ max ( 0 , c i − c i ′ ) \sum \max(0,c_i-c'_i) ∑max(0,ci−ci′),并且对任意 i i i满足 s i ≥ s i ′ s_i\ge s'_i si≥si′。
注意两维的大小都是 n n n,如果暴力转移那么复杂度似乎是 O ( n 4 ) O(n^4) O(n4)。
事实上跑不满。使用部分和可以优化到 O ( n 3 ) O(n^3) O(n3)。
复杂度都不会算是不是该退役了
能过的代码为什么要优化呀
D - Secret Passage
首先考虑长度为 m m m的串 t t t能否被生成。考虑逆向操作,每次相当于选一个数放到开头,然后在开头放 0 / 1 0/1 0/1。那么考虑没被操作过的位置肯定构成了 s s s的后缀,被操作的位置可以按任意顺序排列,那么只要判一下 0 / 1 0/1 0/1的数目。
设 f i , j , k f_{i,j,k} fi,j,k表示生成了长度为 i i i的后缀,其中匹配的长度是 j j j,未匹配的位置中 1 1 1的个数是 k k k的方案数。大力转移即可。
诶怎么一直wa???
仔细思考 wa了半天 后发现构造并没有那么简单,但是我们发现此时正着非常好做(因为插到后面就不用管了),这里有一个非常巧妙的观察:第一次显然对前两个数进行操作,如果剩下的那个数没有放在后面,那么它在以后的操作中也不会被放在后面,设
h
i
,
j
,
k
h_{i,j,k}
hi,j,k表示前缀
i
i
i位生成了
j
j
j个
0
0
0,
k
k
k个
1
1
1时可以被任意放置的数的最大值,可以
O
(
1
)
O(1)
O(1)转移。
复杂度 O ( n 3 ) O(n^3) O(n3)。
细节很多,比较难受
E - Permutation Cover
考虑两件事:
1.1
1.1
1.1 如何判断是否有解。这等价于是找必要条件,我们任取
i
i
i,
j
j
j比较它们的出现次数,容易得到结论:
2
min
(
a
i
,
a
j
)
≥
max
(
a
i
,
a
j
)
2\min(a_i,a_j)\ge \max(a_i,a_j)
2min(ai,aj)≥max(ai,aj),构造也非常简单,让最小数
−
1
-1
−1,其他数
−
2
-2
−2即可。
1.2
1.2
1.2 如何求字典序最小。换句话说,给定一段前缀,判断是否有解。先将不足
K
K
K的部分补完,显然此时如果
2
min
(
a
i
)
≥
max
(
a
i
)
2\min(a_i)\ge \max(a_i)
2min(ai)≥max(ai)那么有解,否则一定满足
2
min
(
a
i
)
+
1
=
max
(
a
i
)
2\min(a_i)+1=\max(a_i)
2min(ai)+1=max(ai),此时必须再补一个最大值在后面,这样恰好有解。
复杂度 O ( ∑ a i k 2 ) O(\sum a_ik^2) O(∑aik2)。
代码很难写
F - Forbidden Tournament
这是道数学题。
考虑怎么判断一张图是否合法。
如果存在一个点没有入度,那么把这个点删去,直到每个点至少有一个入度。
我们称 H H H是不好的,也就是三元环都向一个点连边。
任选一个点 v v v,记 Y = { w ∣ v → w } Y=\{w|v\to w\} Y={w∣v→w},也就是 v v v出边连向的集合, X = V ∖ Y X=V\setminus Y X=V∖Y,也就是 v v v的入边加上 v v v自己。
如果 X X X中有环,也就是有三元环,首先 v v v肯定不在环内,那么这个环都向 v v v连边,就构成了 H H H。
1.1 1.1 1.1 X X X是一个 D A G DAG DAG,存在一个 x 1 , . . . , x k x_1,...,x_k x1,...,xk且 x k = v x_k=v xk=v,满足若 i < j i<j i<j,则 x i → x j x_i\to x_j xi→xj。
1.2 1.2 1.2 对于 u ∈ X u\in X u∈X, w ∈ Y w\in Y w∈Y,如果 w → u w\to u w→u,且 w → w ′ w\to w' w→w′,我们可以推出 w ′ → u w'\to u w′→u,否则会构成 H H H。
1.3
1.3
1.3 如果
Y
Y
Y中有环,那么取
u
=
x
1
u=x_1
u=x1,设环外一点
w
w
w满足
w
→
u
w\to u
w→u,不难发现两种情况都会构成
H
H
H,因此
Y
Y
Y是一个
D
A
G
DAG
DAG,存在
y
1
,
.
.
.
,
y
l
y_1,...,y_l
y1,...,yl,满足若
i
<
j
i<j
i<j,则
y
i
→
y
j
y_i\to y_j
yi→yj。
1.4 1.4 1.4 不难发现 y l → x 1 y_l\to x_1 yl→x1。我们将 y l y_l yl提出来,得到:若 x i → y l x_i\to y_l xi→yl,那么 ∀ i ′ ∈ [ i , k ] \forall i'\in [i,k] ∀i′∈[i,k], x i ′ → y l x_{i'}\to y_l xi′→yl
1.5 1.5 1.5 我们不妨取最大的 t t t满足 y l → x t y_l\to x_t yl→xt。设 i ∈ [ 1 , t ] i\in [1,t] i∈[1,t],我们再任取一个点 y j y_j yj,若 x i → y j x_i\to y_j xi→yj,那么 ∀ i ′ ∈ [ i , t ] \forall i'\in [i,t] ∀i′∈[i,t], x i ′ → y j x_i'\to y_j xi′→yj。注意到 i ∈ [ t + 1 , k ] i\in [t+1,k] i∈[t+1,k]时 x i → y j x_i\to y_j xi→yj,因此 t t t的范围可以省去。
基于上述观察,我们可以直接计数。设删去了 i i i个入度为 0 0 0的点,那么转化为 ( N − i , K − i ) (N-i,K-i) (N−i,K−i)规模的问题,乘上系数 ( N i ) i ! \binom{N}{i}i! (iN)i!。枚举左部点和右部点的数目,问题转化为一个 k × l k\times l k×l矩阵的方案数,其中 a i , j = 1 a_{i,j}=1 ai,j=1表示 y j → x i y_j\to x_i yj→xi。
我们将性质 1.2 1.2 1.2转化成:若 y j → x i y_j\to x_i yj→xi,那么 ∀ j ′ ∈ [ j , l ] \forall j'\in [j,l] ∀j′∈[j,l], y j ′ → x i y_j'\to x_i yj′→xi。那么结合 1.2 1.2 1.2和 1.5 1.5 1.5,这个网格图满足:
- a i , j = 1 ⇒ ∀ j ′ ∈ [ j , l ] , a i , j ′ = 1 a_{i,j}=1\Rightarrow \forall j'\in [j,l],a_{i,j'}=1 ai,j=1⇒∀j′∈[j,l],ai,j′=1
- a i , j = 0 ⇒ ∀ i ′ ∈ [ i , k ] , a i ′ , j = 1 a_{i,j}=0\Rightarrow \forall i'\in [i,k],a_{i',j}=1 ai,j=0⇒∀i′∈[i,k],ai′,j=1
- a 1 , l = 1 a_{1,l}=1 a1,l=1
- a k , j = 1 a_{k,j}=1 ak,j=1
直接对这个阶梯状矩阵计数即可。不难发现只需要判边界处的点的度数。
这一步复杂度 O ( k l ) O(kl) O(kl),总复杂度 O ( n 4 ) O(n^4) O(n4)。
似乎这道题有什么高论但是我不清楚
__EOF__

本文链接:https://www.cnblogs.com/cqbzly/p/17530033.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」