首页 > 其他分享 >CF1787H Codeforces Scoreboard 题解

CF1787H Codeforces Scoreboard 题解

时间:2023-01-30 13:22:06浏览次数:54  
标签:CF1787H min 题解 sum Scoreboard Codeforces times lim

鬼知道怎么会撞题的,甚至是没听过的 OJ。

首先不考虑对 \(a_i\) 取 \(\max\),显然直接按照 \(k\) 降序排序最优。
接下来考虑 \(a_i\) 的限制,如果取到了 \(a_i\) 一定放在最后面最优。
为了方便设 \(f_{i,j}\) 为前 \(i\) 个,\(j\) 个数字不取 \(\max\),最后答案和 \(\sum b\) 的差的最小值。
设 \(lim_i=b_i-a_i\)

\[f_{i,j}=\left\{ \begin{aligned} f_{i-1,j}+lim_i & & j=0 \\ \min\{f_{i-1,j}+lim_i,f_{i-1,j-1}+k_i\times j\} & & j>0 \end{aligned} \right. \]

这样时间复杂度为 \(\Theta\left(n^2\right)\)、

考虑优化。
首先对于样例输出一个整个 \(f\)。
我们发现对于给定的 \(i\),在 \(j\) 改变的时候是下凸的,可以使用 slope trick。
对 \(j\) 一维差分,设 \(g_{i,j}=f_{i,j}-f_{i,j-1}(j>0)\)。

默认 \(1<j<i\),将 \(f_{i,j}=f_{i,0}+\sum\limits_{k=1}^jg_{i,k}\) 带入 \(f_{i,j}\) 的递推式。

得到

\[f_{i,0}+\sum_{k=1}^{j}g_{i,k}=\min\{f_{i-1,0},\sum_{k=1}^{j}g_{i-1,k}+lim_i,f_{i-1,0}+\sum_{k=1}^{j-1}g_{i-1,k}+k_i\times j\} \]

化简得

\[lim_i+\sum_{k=1}^{j}g_{i,k}=\sum_{k=1}^{j-1}g_{i-1,k}+\min\{g_{i-1,j}+lim_i,k_i\times j\} \]

对于上式用 \(j-1\) 代替 \(j\)

\[lim_i+\sum_{k=1}^{j-1}g_{i,k}=\sum_{k=1}^{j-2}g_{i-1,k}+\min\{g_{i-1,j-1}+lim_i,k_i\times (j-1)\} \]

两式相减,得到

\[g_{i,j}=g_{i-1,j-1}+\min\{g_{i-1,j}+lim_i,k_i\times j\}-\min\{g_{i-1,j-1}+lim_i,k_i\times (j-1)\} \]

\[F_i(j)=g_{i-1,j}+lim_i-k_i\times j \]

由于 \(k\) 单调不增,因此可以使用数学归纳法证明,对于自变量 \(j\),\(g_{i-1,j}\) 的增长速度比 \(k_i\times j\) 快,所以 \(F_i(j)\) 随着 \(j\) 的增大,先负后正。

因此,从 \(g_i\) 到 \(g_{i+1}\),一段不变,中间多一个数,一段加上一个数,当然可能头尾两端可能为空。
用平衡树维护,\(O(n\log n)\)

标签:CF1787H,min,题解,sum,Scoreboard,Codeforces,times,lim
From: https://www.cnblogs.com/jiangtaizhe001/p/17075184.html

相关文章

  • lg8945题解
    考虑一个20分的\(O(n^2)\)做法:枚举答案区间\([l,r]\),那么显然要把尽可能多的1填入\([l,r]\)。使用前缀和计算\([l,r]\)中\(0\)的个数,那么填入后的价值可以\(O(1)\)计算。......
  • npm ERR! ERESOLVE unable to resolve dependency tree 问题解决
    阅读原文-问题解决与原因分析安装命令增加--legacy-peer-deps修饰npminstall--legacy-peer-deps......
  • 【题解】P4916 [MtOI2018]魔力环
    锐评:小学奥数测验思路环+循环同构,一眼知群论。考虑类似P4980【模板】Pólya定理,用Burnside引理处理。令\(G\)为循环任意次构成的置换群,研究的“点”为染色......
  • 【题解】洛谷-P3270 [JLOI2016]成绩比较
    式子有点长,步骤有点多,所以写一下。题目要求恰好\(k\)人被吊打的方案数,容易想到二项式反演,设\(f(k)\)为钦定\(k\)人其他任意的方案数,\(g(k)\)为恰好\(k\)人的方案......
  • 题解 CF277E【Binary Tree on Plane】
    费用流。可以将原问题转化为类似于匹配的问题,只不过这种匹配并不是一对一的。具体地,将每个点\(u\)拆成两个点\(u_\text{fa},u_\text{son}\),设源点为\(s\)、汇点为\(t......
  • 题解:【CODE FESTIVAL 2016 Grand Final】90 and 270
    题目链接经典增量构造题。不妨从是否存在构造开始考虑:根据多边形内角和的公式容易得出给定的度数和必须等于\((n-2)\times180^{\circ}\),才有解。换一个角度思考,又因......
  • 【题解】P4707 重返现世
    隔壁友校的初一已经开始做这种题了,准老年选手感到恐惧。思路Min-Max容斥。首先考虑到\(|n-k|\leq10\),感觉有大力做法,考虑用Min-Max容斥求期望。设全集\(U\)......
  • [AHOI2009] 中国象棋 题解
    每行每列的炮数量\(\leq2\),那么整个图就可以被分解为一些环和链。考虑答案的二元生成函数,显然环和链分别的生成函数都是平凡的多项式,而答案的多项式无非是加起来后求exp......
  • 黑白树 题解
    看了半天题解代码大概明白他在干啥了。写篇题解总结一下。题面:一棵树,每个点黑色或白色,有权值。五个操作:改变一个点颜色。使点\(x\)所在的同色连通块权值加\(val\)。......
  • CF468E Permanent 题解
    考虑暴力状压DP。按行DP,记录列哪些被选过,可以做到\(O(2^kk^2)\)。注意到某一列扫完了之后这一列选没选过不重要,可以减少这里的状态。简单优化一下,每次选择最少的一列......