其他分享
首页 > 其他分享> > Diary & Solution Set - 多校度假

Diary & Solution Set - 多校度假

作者:互联网

\(\mathscr{Summary}\sim6.14\)

  Contest.

  总结等会儿写,好像要走了。

\(\mathscr{A}\sim\) 区间第 \(k\) 小

  给定 \(n,m\) 和序列 \(\{a_n\}\)。\(q\) 次询问,每次给出 \(l,r,k\),求将 \(a[l:r]\) 中所有出现次数多于 \(m\) 次的数替换为 \(n\) 后,\(a[l:r]\) 中第 \(k\) 大的值。强制在线。

  \(0\le a_i<n,q\le10^5\)。

  Tags:「A.扫描线」「A.数据结构-树套树」

  原题指明了形如 \(m=5\times10^3\) 和 \(m=10\) 之类的限制,通过迷惑选手增加题目难度属于是。

  先忽略在线,考虑扫描线,从左到右扫描元素,设当前扫描到 \(p\),\(a_p=x\),其最近若干次出现位置为 \(i_0,i_1,i_2,\cdots,i_m,i_{m+1}=p\),那么当左端点 \(l\in(i_1,i_{m+1}]\) 时,\(x\) 的出现次数会在原来的基础上 \(+1\);当 \(l\in(i_0,i_1]\) 时,本来 \(x\) 在 \([l,r]\) 的出现次数为 \(m\),但是 \(p\) 让其出现次数超过 \(m\),所以将 \(l\in(i_0,i_1]\) 时 \(x\) 的出现次数置为 \(0\)(即 \(-m\))。可以用权值线段树维护这一过程。

  强制在线?主席树套主席树即可,毕竟 \(1\text{G}\) 随便用。复杂度 \(\mathcal O(n\log^2n)\)。

\(\mathscr{B}\sim\) 求和

  定义积性函数 \(f_k(p^c)=(-1)^c[c\le k]\),求

\[\sum_{i=1}^n\sum_{j=1}^n\sum_{k=1}^mf_k(\gcd(i,j))\bmod 2^{30}. \]

  \(n\le10^{10}\),\(m\le40\)。

  Tags: 「A.数学-数论」「A.数学-Min_25 筛」「A.数学-Powerful Number 筛法」

  基础化简:

\[\begin{aligned} \textit{ans} &= \sum_{k=1}^m\sum_{d=1}^nf_k(d)\sum_{i=1}^{n/d}\sum_{j=1}^{n/d}[i\perp j]\\ &= \sum_{k=1}^m\sum_{d=1}^nf_k(d)\left(2\sum_{i=1}^{n/d}\varphi(i)-1\right). \end{aligned} \]

后面反手杜教筛,现在式子长成

\[\textit{ans}=\sum_{k=1}^m\sum_{d=1}^nf_k(d)g(n/d). \]

你大可以直接莽 Min_25,\(\mathcal O\left(\frac{mn^{3/4}}{\log n}\right)\) 能过。

  发现 \(f_k(p)=\mu(d)\),这个时候就很激动地想到 Powerful Number。考虑一下 Powerful Number 搜索过程中对函数值的维护,可以用一个 bit 表示某个 \(f\) 的点值,popcount 一下也能快速求出 \(\sum_k f_k(x)\)。然后类似于杜教筛的优化方法,线性筛(貌似需要再容斥一下)求出 \(f\) 前 \(n^{2/3}\) 个点值,后续的前缀和再用 Powerful Number 算。可以得到 \(\mathcal O(n^{2/3})\) 的算法。(更具体地,可以说是 \(\mathcal O(n^{2/3}\frac{m}{\omega})\),但 \(m\) 小得可怜 w。)

\(\mathscr{C}\sim\) 树

  给定一棵含有 \(n\) 个结点的树,点 \(u\) 有点权 \(a_u\),初始为 \(0\)。每次操作指定路径 \(P(u,v)\),对于 \(e=\lang x,y\rang\in P(u,v)\),若 \(x<y\),令 \(a_x\gets a_x+1,a_y\gets a_y+1\);否则令 \(a_x\gets a_x-1,a_y\gets a_y-1\)。给出最终的点权,构造操作方案。先最小化操作次数 \(m\),再最小化 \((u,v)\) 序列的字典序。

  \(n\le10^6\),保证 \(m\le n\)。

  Tags: 「B.贪心」「C.性质/结论」

  被诈骗了 /jk

  注意操作的可合并性,若点 \(u\) 是某个操作的起点,则其一定不是另一个操作的终点,反之亦然。此外,通过考虑每条边被经过的次数,可以发现用每个点作起点(\(+1\))/终点(\(-1\))的次数集合可以唯一描述操作的效果。我们只需要求出这一集合,然后贪心构造字典序最小的操作即可。

  如何求呢?还是将子树作为贪心的子结构。令 \(f(u)\) 表示在放置最少的路径的情况下,从 \(u\) 向上走的路径条数(若为负,则是向下走);\(g(u)\) 表示 \(u\) 作起点的次数。设 \(u\) 的父亲为 \(w\),孩子们为 \(v\),那么

\[f(u)=([u<w]-[w<u])\left(a_u-\sum_v([v<u]-[u<v])f(v)\right),\\ g(u)=f(u)-\sum_vf(v). \]

  \(\mathcal O(n)\) 即完成所有工作。

标签:Set,mathscr,sum,Powerful,Solution,Number,次数,Diary,mathcal
来源: https://www.cnblogs.com/rainybunny/p/16375383.html