*C.Squared Graph
处理出原图 G G G的所有连通分量,转换后的图相当于所有连通分量两两之间合并,假设当前合并的两个连通分量分别为 A , B A,B A,B(注意 A , B A,B A,B可能不同),合并后得到 C C C:
合并规则:
C
C
C中
(
a
,
b
)
(a,b)
(a,b)和
(
a
′
,
b
′
)
(a',b')
(a′,b′)连通当且仅当存在一个正整数
l
l
l,使得在
A
A
A中
a
→
a
′
a\to a'
a→a′,在
B
B
B中
b
→
b
′
b\to b'
b→b′都有一条长度为
l
l
l的路径。
分类讨论如下:
- 若 ∣ A ∣ = 1 |A|=1 ∣A∣=1, C C C的连通块数量 = ∣ B ∣ =|B| =∣B∣; ∣ B ∣ = 1 |B|=1 ∣B∣=1时同理, C C C的连通块数量 = ∣ A ∣ =|A| =∣A∣。
- 否则发现可以通过在一条边上反复横跳,可以走出无限种长度的路径,但是不能改变的路径长度的奇偶性。
所以若 A , B A,B A,B都是二分图,转换后有2个连通块,否则只有一个。
d f s dfs dfs染色一遍,设有 a a a个单点, b b b个点数 > 1 >1 >1的二分图, c c c个非二分图。
a n s = a 2 + 2 a ( n − a ) + 2 b 2 + 2 b c + c 2 ans=a^2+2a(n-a)+2b^2+2bc+c^2 ans=a2+2a(n−a)+2b2+2bc+c2
D.Half Reflector
手玩找规律:
- 如果第一个是 A A A,改成 B B B即可
- 否则将序列左移一位并取反,最后一位改成 A A A
可以发现 2 n 2n 2n次以后序列只会有下面两种情况:
- A B A B A B . . . ABABAB... ABABAB..., B B A B A B . . BBABAB. . BBABAB..轮换
- B A B A B A . . . BABABA... BABABA...保持不变
情况只取决于序列长度的奇偶。
所以
K
≤
2
n
K\leq 2n
K≤2n暴力双端队列打标记模拟,否则直接输出答案。
*E.Increasing Numbers
任何一个上升数,都可以写成 9 9 9个全1数的和(全1数包括0)
假设用了 k k k个上升数,也就是说安排了 9 k 9k 9k个 a i a_i ai使得 ∑ i = 1 9 k 1 0 a i − 1 9 = n \sum\limits_{i=1}^{9k} \frac{10^{a_i}-1}{9}=n i=1∑9k910ai−1=n,即 ∑ i = 1 9 k 1 0 a i = 9 n + 9 k \sum\limits_{i=1}^{9k} 10^{a_i}=9n+9k i=1∑9k10ai=9n+9k
等价于 9 n + 9 k 9n+9k 9n+9k的数位和 ≤ 9 k \leq 9k ≤9k
答案最坏是 O ( l e n ( n ) ) O(len(n)) O(len(n))级别的。暴力模拟即可。
*F.Train Service Planning
这题从昨天下午想到现在,摔
自己理解的出现的问题:
为什么能把 S ( a , n ) + S ( q , n ) S(a,n)+S(q,n) S(a,n)+S(q,n)调整成 K K K的倍数?
可以把
S
(
q
,
n
)
,
S
(
p
,
n
)
S(q,n),S(p,n)
S(q,n),S(p,n)同时加上一个常数
C
C
C使得
S
(
a
,
n
)
+
S
(
q
,
n
)
S(a,n)+S(q,n)
S(a,n)+S(q,n)为
K
K
K的倍数,而所有火车时刻整体后移本质上是等价的。
(也就是说多加了一个
p
0
,
q
0
p_0,q_0
p0,q0的调节变量。。。)
(DZYO神仙代码里
S
i
S_i
Si实际上是
S
i
−
1
S_{i-1}
Si−1,最后调节变量的
S
0
S_0
S0实际上是
q
n
+
p
n
(
即
S
n
)
q_n+p_n(即S_n)
qn+pn(即Sn)(因为区间不交的式子只能限制
S
0
−
S
n
−
1
S_0-S_{n-1}
S0−Sn−1))
太神仙了,跪了