ICPCCamp 2017. Day 2. zimpha's Contest 3

一场比一场更阴间。

A \(\color{red}\bigstar\)

从前向后,对于每个前缀去找一个长度不超过一半的前缀,这个可以 kmp 上跳,把等差数列缩起来,复杂度是对的。

然后不会了。

B \(\color{green}\bigstar\)

上一场出过的套路了。

依然是变成 \(\sum 2^{c(S)}\bmod 4\),然后每个点染黑白,钦定 \(1\) 染黑,这样就可以 \(\bmod 2\) 了,然后每条两边同色的边可以有两种方案,然后发现这样的边必须一条没有才对答案有贡献。

所以对答案有贡献的是二分图情况,而一个连通图的二分图划分数只有一种。

所以就是二分图判定。

C \(\color{blue}\bigstar\)

神题,想了一天。

主要完全看不懂题解在写啥。

首先乱做就可以找到 \(b_2(n)\)link

\[f(n)=\sum_{i=0}^{n/2}f(i) \]

但是这个东西毛用没有,反正我不会做。

直接考虑其生成函数形式:

\[\prod_{i=0}^{\infty} \frac{1}{1-x^{2^i}} \]

最终答案的生成函数:

\[[x^n]\frac{1}{1-x}\prod_{i=0}^{\infty}(\frac{1}{1-x^{m^i}})^k \]

分式的处理,可以考虑去插值,因为 \(\frac{1}{1-x}\) 的系数是 \(0\) 次多项式。

但是 \(\frac{1}{1-x^m}\) 的系数不能表示为 \(x\) 的若干次多项式,因为是 \(x^2\) 的一次多项式,就是下标每个乘了 \(m\)

考虑 \(i\) 从小到大,那么每次相当于把下标除以二继承上去,然后注意到把每个下标除以二后,多项式次数不变,就是 \(a_ix^i\to a_i (mx)^i\)

因此最后多项式的次数就是 \(k\log_m n+1\)

对于每个 \(i\) 去爆出前面的点值,然后就可以算了。

注意在 \(i=\log n\) 层的地方只会保留 \(m^i\) 同余的点值,其他点值都不知道。

因此第 \(i\) 层只需要保留所有 \(x\equiv n \pmod {2^i}\) 的点值即可。

点值连续插值可以优化成 \(O(k\log n)\) 的,所以最终复杂度 \(O(k^2\log^3 n)\)

D \(\color{blue}\bigstar\)

高妙答辩题。

直接考虑数直线非常困难,肯定要通过选两个点来容斥。

两个点的向量如果是 \((x,y)\),那么考虑一条通过 \(L\) 个点的直线,\(\gcd(x,y)=1\) 会算到 \(L-1\) 次,\(\gcd(x,y)=2\),会算到 \(L-2\) 次,那么直接两个相减就可以计算最终贡献。

枚举一个点,考虑把贡献拆成:

x
x.
x..
x...
x....
xxxxxx
.x.....
..x.....
...x.....

分成三块,每一块就是一个 \(\gcd\) 的式子。

大力化一下,反正最后答案是

\[3\sum_{i=1}^n \varphi(n)(n-i)(n-i+1)/2 \]

三个杜教筛就行。

E \(\color{green}\bigstar\)

转对偶,没了。

F \(\color{green}\bigstar\)

按左端点排序去选,设个二维 dp,考虑一下两维是咋转移到下一个的,维护一下即可。

\(O(n^2\log n)\)

G \(\color{green}\bigstar\)

最大流转最小割,然后模拟最大流。

H

大力分讨题。

I \(\color{blue}\bigstar\)

枚举一个拆成子树的大小,那么原树划分为若干棵大小为 \(d\) 的子树的方案是唯一的,就是子树大小超过 \(d\) 就割出去,树哈希一下就可以判断一个 \(d\) 是否合法。

然后相当于找 \(d_1|d_2|...|d_k\) 满足都合法,随便做。

复杂度 \(O(d(n)n)\),官方题解好像有线性,不知道咋做。

J \(\color{red}\bigstar\)

不会。

posted @ 2023-11-03 10:42  houzhiyuan  阅读(53)  评论(0编辑  收藏  举报