暑假集训CSP提高模拟7

暑假集训CSP提高模拟7

你说的对,但是……

  1. T1 Permutations & Primes

    考虑只有包含 \(1\) 的区间有用。

    因为 \(2,3\) 都是质数,考虑将其放在两边,就一定可以将除了整个排列以外所有区间都是 \(2\)\(3\)

    我 SB 粘错代码狂挂 \(100pts\) 不止。

  2. T2 树上游戏

    众所周知,可以二分答案。

    二分完自底向上判断贪心即可。

    赛时狂调两小时不止。

  3. T3 Ball Collector

    首先考虑对 \(a_i,b_i\) 建边。

    考虑每个连通块,设其节点数为 \(s\),当其是一颗树时最多选 \(x-1\) 个,否则是 \(x\) 个。

    考虑有回溯,可撤销并查集维护即可。

  4. 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\) 即可。

posted @ 2024-07-26 07:23  xrlong  阅读(0)  评论(0编辑  收藏  举报