LOJ3192 「ROI 2019 Day2」课桌
LOJ 分析 对于一张课桌,如果其区间被另外的课桌包含,那么它是没用的,可以去掉。那么剩下的课桌满足左右端点都递增。 对于每个班的学生,将其按身高排序,显然每两个人坐同一张课桌更优,且一定是身高小的坐 $l$ 小的桌子。 那么每对学生选择的桌子满足决策单调性,可以分治处理。在计算代价时,把所有班当前组的 $2m$ 个人拿出来按照身高排序,然后维护一个前缀和,这样子只需要二分一下就可以计算了。...
LOJ 分析 对于一张课桌,如果其区间被另外的课桌包含,那么它是没用的,可以去掉。那么剩下的课桌满足左右端点都递增。 对于每个班的学生,将其按身高排序,显然每两个人坐同一张课桌更优,且一定是身高小的坐 $l$ 小的桌子。 那么每对学生选择的桌子满足决策单调性,可以分治处理。在计算代价时,把所有班当前组的 $2m$ 个人拿出来按照身高排序,然后维护一个前缀和,这样子只需要二分一下就可以计算了。...
Codeforces Luogu 分析 考虑对于每一件 T-shirt 计算其贡献。下面设当前考虑的 T-shirt 为 $k$。 设 $f_{i, j}$ 表示前 $i$ 个人,有 $j$ 人适合大小为 $k$ 的 T-shirt 的概率,转移为 是单减的。 因此我们可以每次贪心地找一个 $\Delta g$ 最大的 T-shirt 大小出来。 实现时,我们先求出对每个 T-shirt ...
先放一点上来,剩下的慢慢更。 ビルの飾り付け 4 / Building 4 不难想到一个 $\mathcal{O}(n^2)$ 的 DP:设 $f_{i, j, 0/1}$ 表示前 $i$ 个数选了 $j$ 个 A,最后一个是 A/B 是否可行,转移显然。最后逆序构造方案即可。 可以发现对于某个 $i, 0/1$,为真的 $j$ 一定是一段区间,因此我们只需要维护这段区间,即可去掉 $j$ ...
Luogu LOJ 分析 先考虑一个贪心。我们把 $d_i$ 从大到小排序,那么每个子树都对应一段区间,我们把儿子按照编号排序,然后把区间依次划分下去即可。 这样子只能通过所有 $d_i$ 互不相同的点,原因是在 $d_i$ 相同时可以通过一些交换使得编号小的点的 $d_i$ 变大。 考虑修正这个贪心。我们维护 $c_i$ 表示 $\leq d_i$ 的可用的难度的个数,那么节点 $u$ 只...
Luogu LOJ 分析 走的路径应满足起点、终点的度数为奇数、其它点的度数为偶数,这个条件长得很像欧拉回路。 我们首先把 $m$ 条关键边连上,然后再在起点、终点间连一条边。这样子会有一些度数为奇数的点,显然相邻的两个间连一条边是最优的。这样子满足了度数限制。 但是我们还需要让图连通。我们把所有连通块缩成一个点,然后求最小生成树,那么可以花费最小生成树上边权和的两倍的代价让图连通起来。 时...
高速道路の建設 / Construction of Highway 这个操作长得很像 LCT 中的 access。 于是我们每次只要 access 一下并把所有颜色段拿出来,然后树状数组求逆序对数,再把对应的边连上并把整条重链的颜色赋值为 $c_v$。 因为 access 是均摊 $\mathcal{O}(\log n)$ 的,所以每次颜色段数也是均摊 $\mathcal{O}(\log n...
官网 AtCoder LOJ 試験 / Examination 三维偏序板子,CDQ 即可。 代码 ビーバーの会合 / Meetings 首先有一个结论:Query(x,y,z) 返回的是三个点两两之间 LCA 中最深的那个。 我们先在 $[1,n)$ 中随机一个点 $y$,然后询问 $(0,y,z)$,即可求出 $0\to y$ 链上的点以及其它点在链上那个点的子树中。 那么直接递归处理链...
Div1 Div2 从一月份一直咕到现在的一场比赛 /kel ConneR and the A.R.C. Markland-N 暴力往两边找即可。 代码 JOE is on TV! 显然每次淘汰掉刚好一个人是最好的。 答案即为 $\sum_{i=1}^n\frac{1}{i}$。 代码 NEKO's Maze Game 维护每个格子是否是岩浆,当一个格子改变时维护一下上下两格都是岩浆的列数即...
AtCoder 分析 因为要字典序最小,所以可以贪心,从前往后确定所有位,每位尽量填 $0$。 为了方便,我们把是 $p$ 中的前缀最大值的前缀最大值称作“旧的“,不是 $p$ 中前缀最大值的前缀最大值称作”新的“。 首先有一个结论:如果一个 $s$ 合法,那么 $x,y$ 两个序列中一定有一个序列的前缀最大值全都是旧的。 证明可以这样考虑:如果 $x,y$ 中都有一个新的前缀最大值,那么我...
Codeforces Luogu 分析 对 $f_i(x)=x(a_i-x^2)$ 求二阶导可以发现它是凸的,那么每次选一个 $\Delta y$ 最大的放一定是最优的。 我们二分最小的 $\Delta y$,对每个函数二分(或者直接解一元二次方程)找到它被加的次数,判断是否 $\leq k$ 即可。 这样子最后可能并不能达到 $k$,把还没加的部分选加到 $\Delta y$ 最大的那些上...