新ABC后两题口胡计划
真实水平好吧
8说了,卷起来
ABC230G - GCD Permutation
考虑
x
=
g
c
d
(
i
,
j
)
,
y
=
g
c
d
(
p
[
i
]
,
p
[
j
]
)
x=gcd(i,j),y=gcd(p[i],p[j])
x=gcd(i,j),y=gcd(p[i],p[j])
然后我们可以枚举
x
,
y
x,y
x,y,计算
i
,
j
i,j
i,j的个数,然后容斥
容斥系数就是
−
μ
(
x
)
∗
−
μ
(
y
)
-\mu(x)*-\mu(y)
−μ(x)∗−μ(y)
大概就是这样,官方题解讲点详细一些
code
ABC229G - Longest Y
首先把
Y
Y
Y的位置拿出来,考虑枚举一个区间的左端点,二分一个右端点,那么一定是两边的往正中间的靠近
如
a
=
{
1
,
2
,
3
,
5000
,
10000
,
20000
}
a=\{1,2,3,5000,10000,20000\}
a={1,2,3,5000,10000,20000}
那么一定是往
3
3
3或
5000
5000
5000靠近
然后设
b
i
=
a
i
−
i
b_i=a_i-i
bi=ai−i
那么就变成了求最小的
∑
l
≤
i
≤
r
∣
b
x
−
b
i
∣
\sum_{l\le i \le r} |b_x-b_i|
∑l≤i≤r∣bx−bi∣
x
x
x取中点即可
好吧,其实不用二分,直接用双指针即可
code
ABC219G - Propagation
典型的图分块
对于度数 ≤ n \le \sqrt{n} ≤n的点,我们称之为小度点,直接大力修改
否则在这个点上打上标记,称这个点为大度点
考虑怎么得到当前点的颜色,遍历和这个点相连的大度点,比较一下时间戳就可以得到当前点现在的颜色了
时间复杂度
O
(
n
n
+
m
)
~ O(n\sqrt{n}+m)
O(nn+m)
code
ABC218G - Game on Tree 2
典型的DP,对冲DP
路径一定是根到叶子结点的一条路径,我们可以先吧每个叶子结点的答案算出来,
f
[
u
]
f[u]
f[u]就是根到叶子的中位数
用对顶堆/两个multiset可以很容易实现
然后如果 d e p dep dep为奇数,到先手操作,那么就找 max v ∈ s o n [ u ] f [ v ] \max_{v\in son[u]} f[v] maxv∈son[u]f[v]否则就为 min \min min
ABC217G - Groups
直接考虑
d
p
[
i
]
[
j
]
dp[i][j]
dp[i][j]表示前
i
i
i个,放在
j
j
j个盒子的方案数
首先可以新开一个盒子
d
p
[
i
]
[
j
]
+
=
d
p
[
i
−
1
]
[
j
−
1
]
dp[i][j]+=dp[i-1][j-1]
dp[i][j]+=dp[i−1][j−1]
然后可以放进其中一个盒子里
d
p
[
i
]
[
j
]
+
=
d
p
[
i
−
1
]
[
j
]
∗
(
j
−
i
−
1
m
)
dp[i][j]+=dp[i-1][j]*(j-\frac{i-1}{m})
dp[i][j]+=dp[i−1][j]∗(j−mi−1)
ABC216G - 01Sequence
把区间按照右端点排序,然后尽量往右放即可
具体可以用树状数组加堆来实现
code
ABC215G - Colorful Candies 2
注意到对于一种颜色
i
i
i,假设它出现了
a
[
i
]
a[i]
a[i]次,那么它对答案的贡献就是
(
n
k
)
−
(
n
−
a
[
i
]
k
)
(
n
k
)
\frac{\binom{n}{k}-\binom{n-a[i]}{k}}{\binom{n}{k}}
(kn)(kn)−(kn−a[i])
然后根据期望的线性性全部加起来即可
优化就是把出现次数相同的分成一类,那么不同的类最多只有
n
\sqrt{n}
n个,大力做即可
code
ABC214G - Three Permutations
这题还是有些难度的啊
大概就是考虑把
p
i
−
>
q
i
p_i->q_i
pi−>qi,然后最后一定练成若干个环
考虑二项式反演
每个环可以独立考虑,做个环形dp,然后再大力卷起来就行了
ABC213G - Connectivity 2
设
f
[
S
]
f[S]
f[S]表示
S
S
S中的点联通的方案数(只考虑
S
S
S中的边)
设
c
n
t
[
S
]
cnt[S]
cnt[S]表示
S
中
边
的
数
量
S中边的数量
S中边的数量
显然有
f
[
S
]
=
2
c
n
t
[
S
]
−
∑
T
∈
S
f
[
T
]
∗
2
c
n
t
[
S
−
T
]
f[S]=2^{cnt[S]}-\sum_{T \in S}f[T]*2^{cnt[S-T]}
f[S]=2cnt[S]−∑T∈Sf[T]∗2cnt[S−T]
得到 f f f之后就好计算答案了
ABC212G - Power Pair
首先对于
x
n
≡
y
(
m
o
d
p
)
x^n \equiv y ( \mod p)
xn≡y(modp)
根据原根的性质
x
,
y
x,y
x,y都可以唯一的被表示为
x
=
r
a
,
y
=
r
b
x=r^a,y=r^b
x=ra,y=rb
所以原式变成
r
a
n
≡
r
b
(
m
o
d
p
)
r^{an} \equiv r^b (\mod p)
ran≡rb(modp)
那么根据费马小定理可以得到
a n ≡ b ( m o d p − 1 ) an \equiv b(\mod p-1) an≡b(modp−1)
那么题目要求的就变成了
∑ a = 1 p − 1 p − 1 g c d ( a , p − 1 ) \sum_{a=1}^{p-1}\frac{p-1}{gcd(a,p-1)} a=1∑p−1gcd(a,p−1)p−1
于是乎我们可以枚举
g
c
d
gcd
gcd,然后这条式子就变成了
∑
i
=
1
p
−
1
p
−
1
i
∗
ϕ
(
p
−
1
i
)
\sum_{i=1}^{p-1}\frac{p-1}{i} * \phi(\frac{p-1}{i})
∑i=1p−1ip−1∗ϕ(ip−1)
大力做即可