6. 重庆
6.12 模拟赛
T1
最小链覆盖 \(=\) 最长反链 \(=\) \(n\ -\) 拆点二分图最大匹配
那么如何根据得到的最大匹配构造方案
最小链覆盖的方案是容易的,可以根据最小链覆盖调整出最长反链方案(蓝书 P438)
还有一种简洁的方法
从右侧的非匹配点出发 dfs,从右走到左只能走非匹配边,从左往右走只能走匹配边,取左侧 dfs 到的点和右侧没 dfs 到的点,得到的是一种最小点覆盖的方案。
取最小点覆盖的补集,得到最大独立集。
若 \(x\) 在左右两侧拆出的点都在最大独立集中,我们就选出 \(x\),所有这样的 \(x\) 构成原 DAG 最长反链。
https://www.cnblogs.com/PinkRabbit/p/12238880.html
T2
我竟然把置换的复合记反了 /lh
\(f\circ g=h\) 的含义是 \(h_i=f_{g_i}\),有结合律没有交换律,有逆元 \(f\circ f^{-1}=f_{-1}\circ f=e\),\(e_i=i\) 为单位元。
有性质 \((f\circ g)^{-1}=g^{-1}\circ f^{-1}\)。
然后这题就是找规律玩了
T3
6.14
T1
给你长度为 \(n\) 的序列 \(a\),求忽略出现次数大于 \(w\) 的数字之后的区间第 \(k\) 小,强制在线。
\(n,q\leq 10^5\)
先考虑离线怎么做,当然是莫队啊,离线可以整体二分,二分之后对于每个值 \(x\),我们让区间中前 \(w\) 个 \(x\) 产生 \(1\) 的贡献,第 \(w+1\) 个 \(x\) 产生 \(-w\) 的贡献,后面的 \(x\) 贡献为零。考虑每个数能对哪些区间产生多少的贡献,发现这些区间都是矩形,于是问题就可以先矩形加,每个询问区间就相当于一次单点查询,线段树扫描线即可。
不过这个题强制在线,上面的算法是不是寄了?其实上述过程中每个分治区间每个矩形都是线段树上做区间加,我们把用到的所有线段树都可持久化下来,查询就能每次直接在主席树上查了。
时间和空间复杂度都是 \(O(n\log^2 n)\),比较难受。
T2
\(x\) 质因数分解为 \(\prod_i p_i^{\alpha_i}\),定义
给定 \(n,k\),求
\(n\leq 10^{10},k\leq 40\),模数 \(2^{30}\)
完全不会什么 powerful number,min_25,州阁筛,只能照搬题解做法了/dk
莫反一下得到
\(\varphi\) 的前缀和杜教筛即可,考虑求 \(f\) 的前缀和 \(F_d(x)=\sum_{i=1}^xf_d(i)\)。
定义 \(\lambda(x)=\prod_i(-1)^{\alpha_i}\),容斥求出 \(F_d\)
这个容斥的含义是,钦定 \(x\) 为不合法质因数集合 \((\alpha_i>d)\),剩下随意。
\(\lambda\) 显然是积性函数,那么 \(\Lambda(x)=\sum_{i=1}^x\lambda(i)\) 也可以杜教筛了。不过杜教筛 \(\Lambda\) 还需要一个 observation,就是 \(\sum_{d|x}\lambda(d)=[x\text{为完全平方数}]\)。
整理一下
求 \(F\) 时,若 \(x\) 较小线性筛预处理,\(x\) 较大枚举上式,可以套用杜教筛的复杂度分析,也是 \(O(n^{2/3})\) 的。
\(\gcd(i,j)=d\) 的数对 \((i,j)\) 数量是 \(2\sum_{i=1}^{\lfloor n/d\rfloor}\varphi(i)-1\) 能不能记住啊啊啊啊
T3
T3 构造竟然是这场最水的一题,应该在这个题上多花点时间的,做出的可能性还是很大的
懒得写了,反正这个题之后我也不大可能来复习(
6.15 多项式,数学专题
其实很不愿意做这个专题,多项式一直是我比较恐惧的一个东西,生成函数那些理论一直拖着没学,多项式全家桶也完全不会,不学的话大量数学题全都摆烂非常难受,学的话现在还有一个月 NOI,学新知识点,还是 10 级的,好像也不划算。
总之这几天专题就是挑了几个最简单的做了一下(
P2354 [NOI2014] 随机数生成器
你是怎么混进来的(
CF923E Perpetual Subtraction
牛逼啊这个卧槽
DP 式子就是 \(p_i\leftarrow\sum_{j\geq i}\dfrac{p_j}{j+1}\),\(p\) 下标 \(0\sim n\),总共 \(m\) 轮,\(n\leq 10^5,m\leq 10^{18}\)。
首先把 \(p_{0\sim n}\) 写成列向量 \(P\),这个 DP 转移就是对 \(P\) 的一个线性变换,把这个变换写作矩阵 \(A\),就是要求 \(A^mP\)。
这个 \(A^m\) 直接算是无法容忍的 \(n^3\log m\),这时有一个 amazing 的方法,对角化。
概念
如果向量 \(v\) 在线性变换 \(A\) 下只发生了伸缩,称 \(v\) 为 \(A\) 的特征向量,伸缩倍数 \(\lambda\) 称为特征值。写成公式就是
也就是
\(v=0\) 是平凡的,如果 \(v\) 不是零向量,那么就说明 \(A-\lambda I\) 的列是线性相关的,或者说它不是满秩的,也就是等价于
从这个方程可以解出特征值 \(\lambda\),进而求出 \(v\)。
得到了 \(v\) 有什么用?如果在 \(n\) 维线性空间中的线性变换,我们解出了它的 \(n\) 个特征向量 \(v_{1\sim n}\),考虑用 \(v_{1\sim n}\) 做线性空间的基底,基变换之后,\(A\) 作用于空间中任一向量,都只有伸缩效果!记 \(A\) 在新的基底下为 \(A^\prime\),也就是说 \(A^\prime\) 是一个对角矩阵!它的幂可以非常容易的求得!
回到本题,通过手解和大胆找规律,发现第 \(i\) 个特征向量的第 \(j\) 维为 \((-1)^{i+j}\binom{i}{j}\),把 \(n\) 个特征向量排成矩阵 \(F\),就是基变换的矩阵(原基底变为新基底乘 \(F^{-1}\),反之就是乘 \(F\))。
同样大胆猜规律,得到 \(F^{-1}_{ij}=\binom{i}{j}\)
答案可以写成 \(F(F^{-1}AF)^mF^{-1}\),\((F^{-1}AF)\) 是对角矩阵,\(m\) 次方快速幂即可,而 \(F,F^{-1}\) 都是组合数,乘一个向量能写成卷积,NTT 即可。
于是复杂度就是 \(O(n\log n)\),做完了!
Gym102978A Ascending Matrix
好题啊这个