http://codeforces.com/problemset/problem/939/E

https://vjudge.net/problem/CodeForces-939E

给一个集合,每次两个操作:

1 a:将一个大于集合所有数的a添加进集合。

2:查询集合中所有子集的最大值-平均值的最大值。

有一个结论:最大值所在的子集一定包含集合最大值,我们用感性证明证明一下。

我们假设结论为假,那么我们已经选定了一个子集,设其最大值为x,我们在集合里还有一个数为x+1,则如果将x换成x+1,平均值只会加上一个小于1的数,而最大值却加1,显然要比原先的值大,所以x+1更优。

同理x与x+2比较可以看成x+1与x+2比较,以此类推。

所以结论必为真。

那么既然我们能固定一个最大值,我们还有一个显然成立的结论,就是子集一定为最小的前k个数和最大的数x构成。因为太显然了就不证了。

既然这样,那么显然答案是一个单峰函数,可以三分求解。

(第一次碰这个题的时候前几个步骤都想到了三分愣是没想到……我是真的蠢,看样子题刷少了)

#include<cstdio>
#include<algorithm>
using namespace std;
typedef double dl;
typedef long long ll;
const int Q=5e5+5;
ll sum[Q],maxx;
int len=0;
inline dl suan(int k){return 1.0*(maxx*k-sum[k])/(k+1);
}
dl sanfen(int l,int r){int mid1,mid2;while(l<=r){if(r-l<3){dl ans=suan(r);for(int i=l;i<r;i++)ans=max(ans,suan(i));return ans;}mid1=l+(r-l)/3,mid2=mid1+(r-l)/3;if(suan(mid1)>suan(mid2))r=mid2;else l=mid1;}
}
int main(){int q,op;scanf("%d",&q);while(q--){scanf("%d",&op);if(op==1){scanf("%lld",&maxx);sum[++len]=sum[len-1]+maxx;}else printf("%.10lf\n",sanfen(0,len-1));}return 0;
}

+++++++++++++++++++++++++++++++++++++++++++

+本文作者:luyouqi233。               +

+欢迎访问我的博客:http://www.cnblogs.com/luyouqi233/+

+++++++++++++++++++++++++++++++++++++++++++

转载于:https://www.cnblogs.com/luyouqi233/p/8456439.html

CF939E:Maximize! ——题解相关推荐

  1. AtCoder arc145. C - Split and Maximize题解

    题目描述 https://atcoder.jp/contests/arc145/tasks/arc145_c 输入样例 10000 输出样例 391163238 算法 首先很容易知道的是,如果只有 4 ...

  2. 2016 ACM / ICPC Asia dalian Regional Contest 题解(11 / 11)【每日亿题2021 / 2 / 17】

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 目录 A .(2017 ACM ICPC dalian H)To begin or not to be ...

  3. 2017 ACM ICPC Asia Shenyang Regional Contest 题解(10 / 13)【每日亿题2 / 16】

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 目录 A.(2017 ICPC shenyang I)Little Boxes B.(2017 ICP ...

  4. LeetCode 力扣算法题解汇总,All in One

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: https://fuxuemingzhu.cn 关键词:LeetCode,力扣,算法,题解,汇总,解析 把自己刷过的所有题目做一个整理, ...

  5. LeetCode题解(Week 9):486. Predict the Winner

    原题目: Given an array of scores that are non-negative integers. Player 1 picks one of the numbers from ...

  6. [Codeforces939E][三分法]Maximize!

    翻译 给出Q(Q<=5*10^5)个操作,共有两种操作 第一种操作输入两个数op x:op表示第几种操作,x表示在当前序列中插入数x(x<=10^9),保证x大于当前序列中任意一个数 第二 ...

  7. 第二届CCPC女生赛 粗略题解(要做重现的不要看哦)

    因为再不全力投入华为软件精英挑战赛就来不及了! 而且直播时讲过题了,所以只能粗略写一个题解,希望大家包涵>.< 基本可以参考代码,可以画图模拟加思考脑补其原理与过程23333~~ 会后续有 ...

  8. P2858 [USACO06FEB]Treats for the Cows G/S 题解

    emmmmmm,第二篇文章,多多写文章,好好掌握知识! 前言 原本在educoder上刷题,刷到[粉刷匠]一题,使用区间DP来做的.自己之前曾经小部分刷过背包DP的题目,对于区间DP还是知之甚少.在稍 ...

  9. zju 2007校赛题解

    发信人: kelefe (~_~), 信区: ACMICPC标 题: [zz from freecity]zju校赛题解发信站: 逸仙时空 Yat-sen Channel (Wed Apr 18 18 ...

最新文章

  1. 18离线帮助文档_VIM学习笔记 Zeavim离线文档查看器
  2. Ionic介绍以及搭建环境、新建和运行项目
  3. 保存课程图片-服务端开发
  4. SAP CRM系统里的附件存储逻辑
  5. python中设置时间格式--模块datetime中日期和时间格式的参数
  6. 加密2-华东师范-2020
  7. 网站链接自动化测试原理及工具介绍
  8. gorilla websocket无法跨域_聊聊浏览器同源策略与跨域方案详解
  9. C++ 多态性之虚函数抽象类纯虚函数
  10. 【Android开发】jarsigner重新打包apk
  11. 爱普生R230打印机故障大全
  12. zabbix+snmp+Granfana监控打印机
  13. 【OpenGL】高级片段着色器——高斯模糊和索贝尔边缘检测
  14. 超级冷笑话,冷死人不偿命
  15. 注意力机制在视觉中的实战
  16. 多个wordpress共享用户信息、共享Cookie
  17. (转发)线性代数的本质
  18. 小程序组件的初始化方法attached
  19. 【学习笔记】李宏毅2021春机器学习课程第6.2节:生成式对抗网络 GAN(二)
  20. 华硕a43s遇到的问题总结

热门文章

  1. javascript 死循环
  2. 三十一、二叉排序树的创建、删除和遍历
  3. Caffe 中的卷积--权宜之计
  4. pip安装包以后jupyter不能导入的解决办法
  5. java对于app版本号比较,Java对比APP版本号大小
  6. java定时关机源码_java实现电脑定时关机的方法
  7. java 简单 语言_将简单的表达式语言放入java中
  8. java urlstreamhandler_获取对Java的默认http(s)URLStreamHandler的引用
  9. cocos2d-x android 黑屏,cocos2d-x-3.8生成android 的apk后真机测试出现黑屏
  10. [k8s] 第八章 数据存储