DUT Star Weekly Contest #3 Problem F Solution
问题转化
\[a_i+a_j+(i-j)^2=a_i+i^2+a_j+j^2-2ij\]
令 \(b_i=a_i+i^2\) , 问题化为: 求
\[\max \{b_i+b_j-2ij\}, \ (1 \le i, j \le n, i \ne j).\]
固定 \(i\) , 不妨设 \(j<i\) , 定义函数
\[
\begin{equation}
F_i(j) = b_j-2ij,\ (1 \le j< i)
\end{equation}
\]
问题化成: 求
\[
\begin{equation}
OPT_i = \max{F_i(j)}.
\label{OPT}
\end{equation}
\]
设 \(k<j<i\) , 我们来推导取 \(j\) 优于 \(k\) 的条件:
\[b_j - 2ij > b_k-2ik \Longrightarrow (b_j-b_k) > 2i(j-k)\]
即
\[
\begin{equation}
\dfrac{b_j - b_k}{j-k} > 2i
\label{C}
\end{equation}
\]
将 \(\eqref{C}\) 式左边记作 \(g(k, j)\) , 右边记作 \(f(i)\) , 对于 \(OPT_i\) 而言, \(j\) 优于 \(k\) 的条件为:
\[
\begin{equation}
g(k,j) > f(i) \label{general_C}
\end{equation}
\]
考虑一平面点集 \(P: \{ p_i: (i, b_i)\}, 1 \le i \le n\), 则 \(g(k, j)\) 表示斜率, 显然有
\[ g(j, k) = g(k, j) \]
斜率单调性优化
为了快速求 \(OPT_i\), 借助 \(\eqref{general_C}\) , 我们研究一下哪些 \(j\ (1 \le j < i)\) 不可能是 \(OPT_i\) 的唯一解. 有如下结论:
设 \(j_1<j_2<j_3\) ,
\(g(j_1, j_2) \le g(j_2, j_3)\) \(\Longrightarrow\) \(\forall i > j_3, \quad j_2\) 不优于 \(j_1\) 或者 \(j_2\) 不优于 \(j_3\)
证明:
\(\forall i > j_3\),
若 \(j_2\) 优于 \(j_3\) 即 \(g(j_2, j_3)<f(i)\), 则 \(g(j_1, j_2) \le g(j_2, j_3) < f(i)\) 即 \(j_1\) 优于 \(j_2\)
若 \(j_2\) 优于 \(j_1\) 即 \(g(j_1, j_2)>f(i)\), 则 \(g(j_2, j_3) \ge g(j_1, j_2) > f(i)\) 即 \(j_3\) 优于 \(j_2\)
根据这个结论, 为了求解 \(OPT_i\), 可以维护一个点的队列使得
- 相邻两点的斜率严格递减.
- 任意相邻两点的斜率都满足 \(\eqref{general_C}\) 式
这样队尾的点即为最优.
由 \(n\) 个点构造这样的一个队列的复杂度是 \(O(n)\). 另外, 可以令队列中的点只满足上述条件1, 然后从后向前遍历或者二分寻找 与前一个点斜率仍满足 \(\eqref{general_C}\) 式的最末的那个点.
然而我们并不能对每个 \(OPT_i\) 都从头求一遍, 那样复杂度和暴力一样. 对于一般情况, 我们可以动态维护一个斜率严格递减的队列, 在上面二分求解, 复杂度是 \(O(n\log n)\) . 当 \(f(i)\) 单调时, 复杂度可以做到 \(O(n)\) :
- \(f(i)\) 递增: 在斜率单调递减的基础上, 每次在求解 \(OPT_i\) 之前, 若队尾两点满足 \(g(j_1, j_2) \le f(i)\) , 则队尾点出队, 反复该操作. 用队尾元素计算DP值.
- \(f(i)\) 递减: 在斜率单调递减的基础上, 每次在求解 \(OPT_i\) 之前, 若队首两点符合 \(g(i_1, j_2) \ge f(i)\) , 则队首点出队, 反复该操作. 用队首元素计算DP值.
这一步可以称作 EXPOSING, 很形象, 它的目的正是将最优的转移点暴露出来.
总结
形如
\[
\begin{equation}
g(i,j) \lessgtr f(i)
\label{condition}
\end{equation}
\]
, 左边 \(g(i,j)\) 是某种斜率的形式, 都可以通过维护斜率单调的队列来优化. 一般情况下, 复杂度可优化到 \(O(n\log n)\) , 当 \(f(i)\) 单调时, 复杂度可进一步优化到 \(O(n)\) :
- 形如 \(g(i,j)>f(i)\) , 维护一个相邻点斜率严格递减的点列.
- 形如 \(g(i,j)<f(i)\) , 维护一个相邻点斜率严格递增的点列.
DUT Star Weekly Contest #3 Problem F Solution的更多相关文章
- The Ninth Hunan Collegiate Programming Contest (2013) Problem F
Problem F Funny Car Racing There is a funny car racing in a city with n junctions and m directed roa ...
- 2018 Multi-University Training Contest 3 Problem F. Grab The Tree 【YY+BFS】
传送门:http://acm.hdu.edu.cn/showproblem.php?pid=6324 Problem F. Grab The Tree Time Limit: 2000/1000 MS ...
- 2019 GDUT Rating Contest II : Problem F. Teleportation
题面: Problem F. Teleportation Input file: standard input Output file: standard output Time limit: 15 se ...
- Problem F Plug It In!
题目链接:https://cn.vjudge.net/contest/245468#problem/F 大意:给你插座和电器的对应关系,有多个电器对应一个插座的情况,但是一个插座只能供一个电器使用,现 ...
- 2013-2014 ACM-ICPC, NEERC, Southern Subregional Contest Problem F. Judging Time Prediction 优先队列
Problem F. Judging Time Prediction 题目连接: http://www.codeforces.com/gym/100253 Description It is not ...
- 2010-2011 ACM-ICPC, NEERC, Moscow Subregional Contest Problem F. Finance 模拟题
Problem F. Finance 题目连接: http://codeforces.com/gym/100714 Description The Big Boss Company (BBC) pri ...
- HDU 6324.Problem F. Grab The Tree-博弈(思维) (2018 Multi-University Training Contest 3 1006)
6324.Problem F. Grab The Tree 题目看着好难,但是题解说的很简单,写出来也很简单.能想出来就是简单的,想不出来就难(讲道理,就算是1+1的题目,看不出来就是难的啊). 和后 ...
- Leetcode Weekly Contest 86
Weekly Contest 86 A:840. 矩阵中的幻方 3 x 3 的幻方是一个填充有从 1 到 9 的不同数字的 3 x 3 矩阵,其中每行,每列以及两条对角线上的各数之和都相等. 给定一个 ...
- LeetCode Weekly Contest 28
1. 551. Student Attendance Record I 2. 552. Student Attendance Record II hihocode原题,https://hihocode ...
随机推荐
- 一个成功的BI项目实施需要注意哪些?
BI是所有IT系统中最适合于管理层和决策层使用的信息系统. ERP等各类信息系统中的数据,只有通过BI才能将隐藏在数据中的信息挖掘出来.转化为事实. BI的实施也需要依据企业情况进行“定制”.如何实施 ...
- CentOS7安装NodeJS6.9
1.下载 wget https://nodejs.org/dist/v6.9.2/node-v6.9.2-linux-x64.tar.xz 2.解压 tar -xJf node-v6.9.2-linu ...
- iOS - 分析JSON、XML的区别和解析方式的底层是如何实现的(延伸实现原理)
<分析JSON.XML的区别,JSON.XML解析方式的底层是如何实现的(延伸实现原理)> (一)JSON与XML的区别: (1)可读性方面:基本相同,XML的可读性比较好: (2)可扩展 ...
- iOS平台UDID方案比较
苹果在iOS6中禁用了[UIDevice uniqueIdentifier],在iOS7中又把mac地址的获取给堵上了.没办法,毕竟人家是老大,说不让你用,你也没办法.在这边总结一下现有的一部分UDI ...
- Android 网络框架之Retrofit2使用详解及从源码中解析原理
就目前来说Retrofit2使用的已相当的广泛,那么我们先来了解下两个问题: 1 . 什么是Retrofit? Retrofit是针对于Android/Java的.基于okHttp的.一种轻量级且安全 ...
- 论Pair的重要性
这些天我在用React和D3做图表,从已经实现的图表里复制了一些坐标轴的代码,发现坐标轴上的n个点里,只有第一个点下面能渲染出文字提示,其余点下面都无法渲染出文字. 和组里的FL一起百思不得其解好几天 ...
- Perforce 与Source Insight, Visual Studio集成
转自:http://shashanzhao.com/archives/837.html 1.Perforce 首先需要为perforce设置系统环境变量,以便perforce命令行可以正常使用. 环境 ...
- 树莓派3B更新软件
因为软件是要不断更新的,所以半个月或者一个月要升级一下软件 升级软件非常简单 在终端或者SSH里输入 sudo apt-get update && apt-get upgrade -y ...
- [游戏开发-学习笔记]菜鸟慢慢飞(九)- NGUI- UIWidget(官方说明翻译)
- 解决Ubuntu下Firefox+OpenJDK没有Java插件的问题
如果是安装的OpenJDK,很遗憾它是没有libnpjp2.so的. 此时按照网上各种奇怪的方法都挣扎无效,但可以用icedtea插件来解决这个问题. icedtea的版本与本机安装的OpenJDK版 ...