2023-1-11 #26 我仍珍惜 你予我 这一段随时光起舞的情节
——Kevinz《Say a Good Bye》
今天 dls 来雅礼了,于是一行人围着 yali 转了几圈,去火宫殿吃了一顿!
挺开心的。
XX Open Cup, Grand Prix of Tokyo。
142 A Cookies
以前考过的联考题,不会做啊。
我们考虑增量地加入 \(a_{1,\cdots,n}\),我们发现一个饼干如果被剩下,那么以后都会被剩下。
于是我们可以维护每个小孩拿到什么饼干,下面我们直接陈述维护方式:
对于每个类型相同的极长连续段,用一个小根/大根堆维护这一段小孩的饼干,我们加入一个饼干无非从前到后,每个堆 push 当前饼干,并将当前饼干替换成这个堆的堆顶。
我们将相邻的小根/大根堆两两配对,结论是,每对满足某个 \(\max\) 小于另一个的 \(\min\) 的堆,我们交换这两个堆的顺序对答案无影响。
于是,我们时刻查看是否有这样的事件,若有,我们就 swap 两个堆,并将相邻相同类型的堆合并。
下面说明,上述算法复杂度为 \(O(n\log m+m\log^2 m)\)。
我们令势能为:对于每个堆对 \((a,b)\),\(a\) 中在 \(b\) 值域区间内、\(b\) 中在 \(a\) 值域区间内的数字个数,每次操作一定会令每个堆对的势能减小。(容易得知每个时刻的势能均为 \(O(m)\) 级别)
假设现在有 \(L\) 对堆,我们加入 \(\frac{2m}{L}\) 个数字,至多 \(\frac{m}{2}\) 对堆能抗住这样的势能减少。于是,一定有 \(\frac{m}{2}\) 对堆满足:其发生事件,或者其邻居发生事件,则一定有不少于 \(\frac m6\) 对堆发生事件。
复杂度为 \(T(n)=\frac{2m}{n}\cdot n+T(\frac 56 n)\)。
143 B Evacuation
询问的区间可以根据最近的边界分成两个部分,不妨只看左半边。
考虑一个点 \(x\) 在区间 \([l,r]\) 内的代价怎么算,列出式子:
通过控制 \(i\) 的范围可以把 \(\max\) 消掉,只需维护 \(\sum a_i\) 以及 \(\sum ia_i\),很容易 \(O(1)\) 计算。
现在考虑原问题。
144 C Sum Modulo
谔谔题,一开始的思路全错了。
很容易列出 \(f(n)=\sum_{i=1}^n a_i f((n-i)\bmod m)\),高斯消元复杂度过高。
我们尝试用 \(f(1)\cdots f(n-1)\),以及一些常数 表示出一个 \(f(i)\):
这个问题事实上等价于常系数齐次线性递推,我们可以使用多项式取模在 \(O(n\log^2 m)\) 内解决这一问题。(不用 FFT 可以 \(O(n^2\log m)\))
只需表示出 \(f(m-n+1)\cdots f(m-1)\),就可以列出 \(n-1\) 个关于 \(f(1)\cdots f(n)\) 的方程,然后做 \(O(n^3)\) 的高斯消元就好了。
复杂度 \(O(n^3+n^2\log^2 m)\)。
D Xor Sum:
145 J Median Replace Hard
146 K Game and Queries
147 L Yosupo's Algorithm
之前发过这题。
148 CFgym102201J Jealous Teachers
149 P4350 [CERC2015]Export Estimate
150 loj#6681. yww 与树上的回文串
151 P6019 [Ynoi2010] Brodal queue
152 P7417 [USACO21FEB] Minimizing Edges P / P7418 [USACO21FEB] Counting Graphs P

浙公网安备 33010602011771号