鸽了一些题。
匹配
先抽出来一个完美匹配,然后尝试调整。
调整相当于:找一个偶环,满足匹配的边和未匹配的边交错,且偶环的总异或和为 \(0\),是不是写个暴力就好了?
发现冲过去了,很牛逼,复杂度 \(O(n^3)\)(?),Code。
不休陀螺
一个区间可以被打出的条件是:
- 令 \(\Delta_i=b_i-a_i\),则 \(x=\sum \Delta_i \ge 0\),令 \(y=\sum \Delta_i[\Delta_i<0]\);
- \(\forall \Delta_i<0, E-a_i+y-\Delta_i\ge 0\);
- \(\forall \Delta_i\ge 0,E+y-a_i\ge 0\);
考虑扫描线,对区间右端点向右移动,考虑如果这个右端点 \(\Delta <0\),左端点肯定可以往后走,\(\Delta>0\),丢掉它对二三两个条件没什么影响。
使用 ST 表分开维护 \(\Delta <0\) 的 \(b_i\) 最大值,\(\Delta>0\) 的 \(a_i\) 最大值,即可双指针得到满足 \(2,3\) 的最大的 \(r\) 的位置,对于条件 \(1\) 直接数点即可,\(O(n\log n)\),Code。
哈哈傻逼题写了这么久。
计算
首先有 \(\gcd(x^a-1,x^b-1)+1=x^{\gcd(a,b)}\)。
于是 \(L,R\) 可以很快的计算得到,但是区间是很大的,但是发现区间内的数 \(\bmod m\) 之后是有长度为 \(m\) 的循环节的,令循环节的个数为 \(n=(R-L+1)/m\),则答案对应的多项式是:
答案也就是这个多项式的 \(km\) 项系数之和,套路的,施单位根反演:
\[\begin{aligned} &\frac{1}{m}\sum_{j=0}^{m-1}\prod_{i=0}^{m-1} (1+\omega_m^{ij})^n\\ \end{aligned} \]对于 \(\prod_{i=0}^{m-1}(1+\omega_m^{ij})\),发现此时按 \(j\) 为步长存在一个大小为 \(\gcd(j,m)\) 的剩余系,令 \(d=\gcd(j,m)\),则这个东西就是 \(\prod_{i=0}^{m/d-1}(1+\omega_{m/d}^{ij/d})^d\),此时 \(j/d\) 的若干倍恰好遍历所有的 \(m/d\),可以省去,枚举 \(d\),则有:
\[\begin{aligned} &\frac 1m\sum_{d|m}\sum_{j=0}^{m-1}[\gcd(m,j)=d](\prod_{i=0}^{m/d-1}\omega_{m/d}^i+1)^{dn}\\ =&\frac 1m\sum_{d|m}\varphi(m/d)(\prod_{i=0}^{m/d-1}\omega_{m/d}^i+1)^{dn} \end{aligned} \]对于方程 \(z^m-1=0\) 有 \(m\) 个解 \(\omega_{m}^0,\omega_{m}^1,\ldots,\omega_m^{m-1}\),故 \(z^m-1=\prod_{i=0}^{m-1}(z-\omega_m^i)\)。取 \(z=-1\) 得到 \((-1)^m-1=\prod_{i=0}^{m-1}(-1-\omega_{m}^i)\)。
对于 \(2|m\),发现答案一定是 \(0\),对于 \(m\) 为奇数,有 \(\prod_{i=0}^{m-1}(\omega_{m}^i+1)=2\)。
于是即求:
直接暴力枚举 \(m/d\) 即可,因为会及时剪枝掉偶数,所以很快的,Code。
染色
单位操作是染一个十字架,于是考虑一下这个东西可以构造出什么样的有用操作。
一个想法是在十字架的四端叠合一个十字架,手摸一下发现得到了一个更大的十字架。
定义:\(k\) 阶十字架表示 \((i,j),(i+2^k,j+2^k),(i-2^k,j-2^k),(i+2^k,j-2^k),(i-2^k,j+2^k)\),可以发现在 \(k\) 阶十字架的所有非中心点再叠合一个 \(k\) 阶十字架,可以得到 \(k+1\) 阶十字架。
发现对于 \(n-1\) 阶十字架,\(i+2^{n-1}\equiv i-2^{n-1}\pmod 2^n\),所以对于每个点构造 \(n-1\) 阶十字架即可。
于是倒着枚举阶数,对每个位置扫一下需要构造的下一阶十字架就行了,\(O(n4^n)\),从这个构造也会发现是一定有解的,Code。