暑假集训CSP提高模拟7
暑假集训CSP提高模拟7
你说的对,但是……
-
T1 Permutations & Primes
考虑只有包含 \(1\) 的区间有用。
因为 \(2,3\) 都是质数,考虑将其放在两边,就一定可以将除了整个排列以外所有区间都是 \(2\) 或 \(3\)。
我 SB 粘错代码狂挂 \(100pts\) 不止。
-
T2 树上游戏
众所周知,可以二分答案。
二分完自底向上判断贪心即可。
赛时狂调两小时不止。
-
T3 Ball Collector
首先考虑对 \(a_i,b_i\) 建边。
考虑每个连通块,设其节点数为 \(s\),当其是一颗树时最多选 \(x-1\) 个,否则是 \(x\) 个。
考虑有回溯,可撤销并查集维护即可。
-
T4 满穗
设 \(q_i\) 表示负数前缀和,\(p_i\) 表示正数前缀和。
首先推式子:
\[i<j,s_i<s_j\Leftrightarrow\tfrac{p_i}{P} - \tfrac{q_i}{Q} < \tfrac{p_j}{P} - \tfrac{q_j}{Q}\Leftrightarrow\tfrac{Q}{P} < \tfrac{q_i - q_j}{p_i - p_j} \]发现最后是斜率形式,可以直接建出上凸包二分。
因为有修改,不能直接建凸包,可以分块,考虑修改一个点,这个点前面的块不会变,后边的斜率也不变,只是会平移,不影响二分,只有块内要改。
直接暴力重构,最后对所有块取 \(\max\) 即可。
——————————————————————————————————————————————————————————————————————————————————————————————————————————
本文来自博客园,作者:xrlong,转载请注明原文链接:https://www.cnblogs.com/xrlong/p/18324455