做题记录 25.6.3
\(\textcolor{purple}\odot\) CF1801F Another n-dimensional chocolate bar
令 \(f_{i,j}\) 表示 \(b_{1\sim i}\) 已经确定,\(\prod b_{i+1\sim n}\ge j\) 时,\(\prod_i\lfloor\frac {a_i}{b_i}\rfloor\frac1 {a_i}\) 的最大值
则 \(f_{0,k}=1\),答案为 \(f_{n,1}\),转移为
由于 \(\lceil\frac jx\rceil=\lfloor\frac{j-1}x\rfloor+1\),令 \(g_{i,j}=f_{i,j+1}\),则有
发现 \(g\) 的第二维只需要保存 \(\{\lfloor\frac {k-1}x\rfloor\}\) 这 \(O(\sqrt k)\) 个数即可(特判 \(k=1\) 的情况),而转移时对于 \(\lfloor\frac jx\rfloor\) 相同的一段 \(x\) 只需要取 \(x\) 最小的转移,即对于 \(g_{i-1,j}\) 只需要枚举 $O(\sqrt j) $ 个 \(x\) 即可
总时间复杂度 \(O(nk^{\frac 34})\)(分析同杜教筛)
\(\textcolor{purple}\odot\) CF1799F Halve or Subtract
显操作后的 \(a\) 可以分为四类:没有变化的,减 \(b\) 的,除以 \(2\) 的,同时减和除的
对于第四种情况显然先除后减最优
因此 \(a_i\) 可能变为 \(a_i,\;\lceil\frac{a_i}2\rceil,\;\max(0,a_i-b),\;\max(0,\lceil\frac{a_i}2\rceil-b)\) 之一
显然第四种取排序后的一个前缀最优
因此枚举 \(0\le k\le n\),假定 \(\forall 1\le i\le k,a_i\gets \max(0,\lceil\frac{a_i}2\rceil-b)\),显然为了满足限制必须有 \(k_1+k_2-n\le k\le \min(k_1,k_2)\),因此枚举 \(\max(0,k_1+k_2-n)\le k\le \min(k_1,k_2)\)
剩下 \(k_1-k\) 个除,\(k_2-k\) 个减
显然两者用到 \(a_{k+1\sim k_1+k_2-k}\) 上最优
令 \(p\) 为最后一个满足 \(a_i\ge b\) 的位置
对于 \(a_{k+1\sim p}\),区间中显然除取一个前缀减取一个后缀最优
对于 \(a_{p+1\sim k_1+k_2-k}\),区间中间取一个前缀除取一个后缀最优
因此 \(a_{k+1\sim k_1+k_2-k}\) 中,一个长为 \(k_2-k\) 的区间取减,剩余部分取除最优
预处理减、除后 \(a\) 的前缀和,对于每个 \(k\) 枚举区间左端点
总时间复杂度 \(O(\sum n^2)\)
\(\textcolor{blue}\odot\) CF1799E City Union
令 \(L_i\) 为第 \(i\) 行前缀 \(\text.\) 的数量,\(R_i\) 为后缀的数量,则合法的必要条件为 \(L\) 和 \(R\) 单峰
因此先求出初始的 \(L\) 和 \(R\),令 \(L_i\gets \min(\max L_{1\sim i},\max L_{i\sim n})\),\(R\) 同理
转化后,网格中的 \(\text \#\) 形成若干个左上到右下或左下到右上分布的连通块,这些连通块之间直接最短路连接即可
时间复杂度 \(O(\sum nm\log \min(n,m))\),可以优化到 \(O(\sum nm)\)
\(\textcolor{purple}\odot\) CF1797E Li Hua and Array
令 \(i\) 向 \(\varphi(i)\) 连边,得到一棵树,则操作二相当于求 \(\sum_{i=l}^r dep_{a_i}-(r-l+1)dep_{\text{lca}_{i=l}^r a_i}\)
势能线段树,每个结点维护区间 \(dep\) 和与区间 \(\text{lca}\),及一个标记表示区间内是否都是 \(1\)
对于操作 \(1\) 若区间中数都是 \(1\) 则返回,否则暴力递归到叶子并修改,这部分总时间复杂度不超过 \(O(n\log V\log n\log\log V+m\log n\log\log V)\)(其中 \(\log\log V\) 为求两个数字 \(\text{lca}\) 的时间复杂度,树高为 \(O(\log V)\))
对于操作二,得到区间内两个信息后直接求即可,时间复杂度 \(O(m\log n\log\log V)\)
总时间复杂度 \(O(V+V\log\log V+n\log V\log n\log\log V+m\log n\log\log V)\)
\(\textcolor{purple}\odot\) CF1796E Colored Subgraphs
对于固定的 \(r\),相当于树以 \(r\) 为根时剖分为若干条链,最短链长度的最大值
从叶子向上贪心,每个点 \(u\) 保存一个 multiset \(f_u\) 表示链长的集合,对于叶子 \(f_u=\mathbb\emptyset\),对于非叶子 \(f_u\) 等于儿子的 \(f\) 的最小值(若空则为 \(0\))加一的集合,答案为非根的 \(f\) 的次小值和根的 \(f\) 的最小值的较小值
对于 \(n\) 个 \(r\) 都求出答案,则再开一个 multiset \(s\) 保存所有 \(f\) 的次大值的集合,在换根的过程中维护 \(s\) 和 \(f\),到点 \(u\) 时 \(u\) 的答案为 \(s\) 的最小值加一和 \(f_u\) 的最小值的较小值
时间复杂度 \(O(\sum n\log n)\)
\(\textcolor{purple}\odot\) CF1798F Gifts from Grandfather Ahmed
根据 \(\text{EGZ}\) 定理,从 \(2n-1\) 个任意整数必然存在 \(n\) 个之和为 \(n\) 的倍数
将 \(s\) 从小到大排序,每次选出 \(s_i\) 个,则在 \(s_k\) 之前,剩余数量都不小于 \(2s_k-1\)
对于 \(s_k\),用额外的数字配到 \(s_k\) 的倍数即可
问题转化为 \(O(k)\) 次形如从大小为 \(O(n)\) 的数集中选出 \(w\) 个使得总和为 \(w\) 的倍数
令 \(f_{i,j,k}\) 表示前 \(i\) 个数中选出 \(j\) 个,总和 \(\bmod w\) 等于 \(k\) 是否可行
bitset 优化即可
时间复杂度 \(O\left(\frac{\sum_{i=1}^k ns_i^2}\omega\right)=O(\frac{n^3}\omega)\)
\(\textcolor{purple}\odot\) CF1799G Count Voting
对投到同组的数量容斥,令 \(f_{i,j}\) 为 \(1\sim i\) 组中有 \(j\) 个投到同组,只考虑这 \(j\) 个的方案数,则答案为 \(\sum_{i=0}^n (-1)^if_{m,i}(n-i)!\),其中 \(m\) 为组数
枚举第 \(i\) 组,令 \(g(i)_k\) 为当前枚举的组中选择 \(k\) 个投到同组,只考虑这 \(k\) 个的方案数
则 \(f_{i,j}\gets f_{i-1,j-k}g(i)_k\)
考虑如何计算 \(g(i)\)
对于一个 \(g(x)\),令 \(h_{i,j}\) 表示当前组中前 \(i\) 个人有 \(j\) 个到当前组的方案数,令 \(l\) 为当前组人数,人分别为 \(p_{1\sim l}\),则转移为
总时间复杂度 \(O(n^2)\)

浙公网安备 33010602011771号