新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=aii
那么就变成了求最小的 ∑ l ≤ i ≤ r ∣ b x − b i ∣ \sum_{l\le i \le r} |b_x-b_i| lirbxbi
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] maxvson[u]f[v]否则就为 min ⁡ \min min

code

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[i1][j1]
然后可以放进其中一个盒子里 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[i1][j](jmi1)

code

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)(kna[i])
然后根据期望的线性性全部加起来即可

优化就是把出现次数相同的分成一类,那么不同的类最多只有 n \sqrt{n} n 个,大力做即可
code

ABC214G - Three Permutations

这题还是有些难度的啊

大概就是考虑把 p i − > q i p_i->q_i pi>qi,然后最后一定练成若干个环
考虑二项式反演
每个环可以独立考虑,做个环形dp,然后再大力卷起来就行了

code

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]TSf[T]2cnt[ST]

得到 f f f之后就好计算答案了

code

ABC212G - Power Pair

首先对于 x n ≡ y ( m o d    p ) x^n \equiv y ( \mod p) xny(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) ranrb(modp)
那么根据费马小定理可以得到

a n ≡ b ( m o d    p − 1 ) an \equiv b(\mod p-1) anb(modp1)

那么题目要求的就变成了

∑ 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=1p1gcd(a,p1)p1

于是乎我们可以枚举 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=1p1ip1ϕ(ip1)

大力做即可

code

posted @ 2021-12-04 08:00  lahlah  阅读(84)  评论(0编辑  收藏  举报