5月CF杂题

Codeforces Round 864 (Div. 2)

这场就不写题意了,可以去看官方题意

CF1797C. Li Hua and Chess

假设国王的位置为 \((x,y)\),要走到 \((a,b)\)。可以发现步数就是 \(\max(\left|x-a\right|,\left|y-b\right|)\)。显然可以一次询问 \((a,b)=(1,1)\) 得到 \(\max\left(x,y\right)\)

对于 \(\max\left(x,y\right)>n\)\(\max\left(x,y\right)>m\) 的这些情况,我们就可以确定 \(\max\left(x,y\right)=y\)\(\max\left(x,y\right)=x\)。再问一次就可以得到答案。

对于其余情况,令 \(t=\max\left(x,y\right)\),我们再询问一次 \((a,b)=(t,t)\),这样就可以得到 \(\min\left(x,y\right)\)。最后再询问一次判断答案是 \((\min\left(x,y\right),\max\left(x,y\right))\) 还是 \((\max\left(x,y\right),\min\left(x,y\right))\) 即可。

CF1797D. Li Hua and Tree

很蠢吧。直接丢到 set 里模拟题意即可。

CF1797E. Li Hua and Array

首先修改直接吉司机就行,因为偶数每次至少减少一半,奇数每次会变成偶数,所以操作次数上界 \(2\log A\)。这个询问很不寻常,我们重点考虑询问。

这个询问可以转化成一个图的问题。更具体地,我们把所有数看成点,在这个图中有很多形如 \(\varphi(i)\rightarrow i\) 的边,每次 \(a_i\leftarrow \varphi(a_i)\) 的操作就可以看成跳到父亲。所以询问就是求 \([l,r]\) 内所有数到他们的 \(\text{lca}\) 的距离之和。

这样看上去是 \(O(n\log n\log^2 A)\) 的,时间和空间都接受不了。但是你发现树高其实最多 \(\log A\) 级别,所以复杂度其实是 \(O(n\log n\log A\log\log A)\) 的,而且跑不满。

ps:为什么对于奇数 \(a\)\(\varphi(a)\) 一定是偶数?把 \(a\) 分解成 \(a=\prod\limits_{i=1}^mp_i^{c_i}\) 的形式,因为 \(\varphi\) 是积性函数,有 \(\varphi(a)=\prod\limits_{i=1}^m\varphi(p_i^{c_i})=\prod\limits_{i=1}^m(p_i-1)(p_i^{c_i-1})\)。因为 \(a\) 为奇数,所以 \(p_i\) 一定是奇素数。

pps:yy 了一个更优的做法(因为当时没回想到树高的性质),不过过了就没写。大概就是除了第一遍建树的时候需要暴力求一下 \(\text{lca}\),其他时候你跳到父亲的修改都可以 \(O(1)\) 维护。更具体地,如果有修改,那么区间 \(\text{lca}\) 会改变当且仅当有一个点会在跳跃后超过现有的 \(\text{lca}\),且至多上升一层,你判一下就行。这样就是 \(O(n\log\log A+n\log n\log A)\) 的(没写,正确性不保证)。

Educational Codeforces Round 149 (Rated for Div. 2)

E. Playoff Fixing

鸽了。

F. Editorial for Two

题意:在 \(a_1\ldots a_n\) 中按原顺序保留恰好 \(k\) 个数 \(b_1\ldots b_k\),序列 \(b\) 的代价为 \(\min\limits_{p=0}^{k}\left\{\max\left(\sum\limits_{i=1}^pb_i,\sum\limits_{i=p+1}^kb_i\right)\right\}\),求最小代价。\(1\le k\le n\le3\times 10^5\)\(1\le a_i\le10^9\)

二分答案。对于每个前缀/后缀贪心保留最小的,可以求出最少要删多少个。

Codeforces Round 875 (Div. 2)

D. The BOSS Can Count Pairs

posted @ 2023-05-02 19:48  xx019  阅读(14)  评论(0编辑  收藏  举报