题意

洛谷

做法一

考虑一种贪心(先别管对不对),设当前已选择的集合为\(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\)也来源于此)

具体做法

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

CF573E Bear and Bowling(6-1)的更多相关文章

  1. Codeforces 639E - Bear and Paradox(二分+贪心)

    Codeforces 题目传送门 & 洛谷题目传送门 原来 jxd 作业里也有我会做的题 i 了 i 了 首先这种题目的套路就是先考虑对于一个固定的 \(c\),怎样求出得分最高的策略,而类似 ...

  2. poj 3176 Cow Bowling(dp基础)

    Description The cows don't use actual bowling balls when they go bowling. They each take a number (i ...

  3. DP:Cow Bowling(POJ 3176)

    北大教你怎么打保龄球 题目很简单的,我就不翻译了,简单来说就是储存每一行的总数,类似于状态压缩 #include <stdio.h> #include <stdlib.h> # ...

  4. CF573E Bear and Bowling 贪心、分块、凸包

    传送门 题解搬运工++ 先证明一个贪心做法的正确性:做以下操作若干次,每一次考虑选择没有被选到答案序列中的数加入到答案序列中对答案的贡献,设第\(i\)个位置的贡献为\(V_i\),如果最大的贡献小于 ...

  5. CF573E Bear and Bowling

    题目 我们设\(f_{i,j}\)表示前\(i\)个数中选\(j\)个的最大值. 那么显然有\(f_{i,j}=max(f_{i-1,j},f_{i-1,j-1}+j*a_i)\). 这个东西我们首先 ...

  6. 【CF573E】Bear and Bowling

    [CF573E]Bear and Bowling 题面 洛谷 题解 首先有一个贪心的结论: 我们一次加入每个数,对于\(\forall i\),位置\(i\)的贡献为\(V_i = k_i\times ...

  7. salesforce 零基础学习(三十三)通过REST方式访问外部数据以及JAVA通过rest方式访问salesforce

    本篇参考Trail教程: https://developer.salesforce.com/trailhead/force_com_dev_intermediate/apex_integration_ ...

  8. FreeCodeCamp 高级算法(个人向)

    freecodecamp 高级算法地址戳这里. freecodecamp的初级和中级算法,基本给个思路就能完成,而高级算法稍微麻烦了一点,所以我会把自己的解答思路写清楚,如果有错误或者更好的解法,欢迎 ...

  9. JavaScript 风格指导(Airbnb版)

    JavaScript 风格指导(Airbnb版) 用更合理的方式写 JavaScript 原文 翻译自 Airbnb JavaScript Style Guide . 目录 类型 引用 对象 数组 解 ...

随机推荐

  1. Linux gcc链接动态库出错:LIBRARY_PATH和LD_LIBRARY_PATH的区别

    昨天在自己的CentOs7.1上写makefile的时候,发现在一个C程序在编译并链接一个已生成好的lib动态库的时候出错.链接命令大概是这样的: [root@typecodes tcpmsg]# g ...

  2. 《C# 爬虫 破境之道》:第二境 爬虫应用 — 第七节:并发控制与策略

    我们在第五节中提到一个问题,任务队列增长速度太快,与之对应的采集.分析.处理速度远远跟不上,造成内存快速增长,带宽占用过高,CPU使用率过高,这样是极度有害系统健康的. 我们在开发采集程序的时候,总是 ...

  3. javascript js获取html元素各种距离方法

    //滚动条 scrollLeft//滚动条距左边距离 scrollTop//滚动条距顶部距离 scrollWidth//滚动条元素的宽 scrollHeight//滚动条元素的高 //可视范围 cli ...

  4. 珠峰-vue

  5. backgroud图片充满元素的方法

    background-image: url("img/headimg.png"); height: 219px; background-size: 100% 100%; backg ...

  6. python函数定义中引用外部变量的一个问题

    如果在函数定义的默认值中引用了一个外部变量,如下所示 x = 3 def func(a = x): print(a, x) 那么a的默认值就会是3, 但是print语句中的x会是调用时的x值 lamb ...

  7. Hibernate入门之命名策略(naming strategy)详解

    前言 JPA和Hibernate都提供了默认映射策略,通过映射将每个实体类映射到具有相同名称的数据库表,它的每个属性都映射到具有相同属性的列, 但是,在实际项目开发中可能出现与默认命名约定不匹配,也就 ...

  8. css3新增边框、阴影、边框、背景、文本、字体

    css3和css有什么区别?简单来讲css3是css(层叠样式表)技术的升级版本,css3新特征有很多,例如圆角效果.图形化边界.块阴影与文字阴影.使用RGBA实现透明效果.渐变效果.使用@Font- ...

  9. cesium1.63.1api版本贴地贴模型量算工具效果(附源码下载)

    前言 cesium 官网的api文档介绍地址cesium官网api,里面详细的介绍 cesium 各个类的介绍,还有就是在线例子:cesium 官网在线例子,这个也是学习 cesium 的好素材.不少 ...

  10. SAP 如何看某个TR是否传入了Q或者P系统?

    SAP 如何看某个TR是否传入了Q或者P系统? 两种方式可以查询. 1)进入Q系统或者P系统.SE16,看表TPALOG, 输入请求号码, 执行,看记录里的字段TPSTAT_KEY是否为空,如果不为空 ...