题意

洛谷

做法一

考虑一种贪心(先别管对不对),设当前已选择的集合为\(A\),这是考虑该集合的补集,每个元素加进来后的增量为\(V_i\),则挑选最大的那个加入该集合

结论1:遵循上述贪心,\(\forall i,j(i<j)\),满足\(a_i>a_j\),倘若选\(j\),集合中必定包含\(i\)

归纳:
\(i,j\)间没有任何元素在\(A\)中,显然成立
假设若\(i\)加入集合,为\(k_1^{th}\),\(j\)为\(k_2^{th}\),贡献差分一下,假设先选\(j\),即\(k_2a_j-k_1a_i-sum>0\)(\(sum\)为中间被选元素和)
显然必定存在某个元素\(a'<a_j\),与假设矛盾

再来考虑这种贪心,假设固定\(A\),贪心加入\(x\),最优解不包含这个,可以用调整法简单证明将其中一个元素换成\(x\)一定不劣

当本次选取\(x\)时,\(i\in [1,x),V_i+=a_x;i\in (x,n],V_i+=a_i\),故\(V_i\)总可表示成\(k_ia_i+y_i\)的形式

具体做法

将序列分块,维护\(O(\sqrt n)\)个\((a_i,y_i)\)的凸壳,选取\(x\),对前面的块内元素的相对位置不发生影响,后面块的整体系数\(k_i+1\),本块需要重构一下

做法二

结论2:一定存在一个分界线\(k\),使得\(k\)之前都没选\(i\),而k之后都选\(i\)

即证明不存在:\(F_{i,j}=F_{i-1,j-1}+j\times a_i\ge F_{i-1,j}(1),F_{i,j+1}=F_{i-1,j+1}\ge F_{i-1,j}+(j+1)a_i(2)\)
归纳:设\(F_{i-1,j}\)没选\(i-1\),\(F_{i-1,j+1}\)选了\(i-1\)
根据\((1)\)可得\(a_{i-1}\ge a_i\),可证明不存在\(F_{i-1,j-1}+j\times a_i\ge F_{i-1,j}\)
另外两种情况也可讨论得出

还有一种证明,不过我看不太透,感兴趣的可以点这里(结论\(2\)也来源于此)

具体做法

二分出分界线,然后后面那段加上一个等差数列

最新文章

  1. 【工业串口和网络软件通讯平台(SuperIO)教程】一.通讯机制
  2. 一个ERP项目实施工程师的若干体会
  3. mysql安装使用笔记
  4. redhat 更新 python 为 2.7.6
  5. Linux中环境变量文件及配置
  6. objdump 分析
  7. python中列表的常用方法
  8. selenium简介
  9. phonegap/cordova常用命令
  10. VS2010 配置opencv环境
  11. log4Net使用的四个步骤
  12. pt-table-checksum解读
  13. TableLayoutPanel 的使用
  14. 解决python第三方插件下载慢的方法
  15. CentOS7.2 使用Shell安装Oracle12c
  16. javascript执行上的一点总结
  17. C# 中传参中的OUT 和 ref 区别 笔记
  18. EF性能检测工具MiniProfilerEF6的使用
  19. IIS 配置 HTTPS
  20. java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.metastore.HiveMetaStoreClient

热门文章

  1. 深入理解ASP.NET Core依赖注入
  2. Coroutine 练习 1 - Coroutine Exercises 1
  3. php插件名称 yum安装
  4. C语言四
  5. 1.3.5 详解项目中的资源——Android第一行代码(第二版)笔记
  6. WebStorm新建JS文件、CSS文件时自动生成文件注释
  7. k8s CNI插件简单了解
  8. 《ADCrowdNet》密集人群检测论文笔记
  9. C#中StreamReader类读取文件使用示例
  10. JavaScript对象模型概念