[Codeforces939E][三分法]Maximize!
翻译
给出Q(Q<=5*10^5)个操作,共有两种操作 第一种操作输入两个数op
x:op表示第几种操作,x表示在当前序列中插入数x(x<=10^9),保证x大于当前序列中任意一个数
第二种操作输入一个数op:op表示第几种操作,求当前序列中的Maximize
定义Maximize为:在当前序列中找出一个子集,Maximize表示子集中数最大值/子集平均数的最大值 输出保留10位小数
题解
从来没有写过三分的我居然瞎写出了个三分哈哈哈
先贪心一下,每次一定会选当前最后插入的一个数
然后可以发现,平均值的函数实际上是一个下凸的函数
为什么?
设平均值为p,小于p的所有数都会拉低p的值,大于p的所有数都会拉高p的值
所以说这是一个下凸函数
下凸函数?当然三分最低点啊!
/*
翻译:
给出Q(Q<=5*10^5)个操作,共有两种操作
第一种操作输入两个数op x:op表示第几种操作,x表示在当前序列中插入数x(x<=10^9),保证x大于当前序列中任意一个数
第二种操作输入一个数op:op表示第几种操作,求当前序列中的Maximize
定义Maximize为:在当前序列中找出一个子集,Maximize表示子集中数最大值/子集平均数的最大值
输出保留10位小数
*/
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<algorithm>
#include<cmath>
using namespace std;
typedef long long LL;
LL sum[510000],f[510000],list[510000];
int T,head;
int main()
{head=0;scanf("%d",&T);while(T--){int op;LL x;scanf("%d",&op);if(op==1){scanf("%I64d",&list[++head]);sum[head]=sum[head-1]+list[head];}else{int l=1,r=head;while(l<r-1){int mid=(l+r)/2;int mmid=(mid+r)/2;if((double)(list[head]+sum[mid])/(mid+1)>(double)(list[head]+sum[mmid])/(mmid+1))l=mid;else r=mmid;}if((double)(list[head]+sum[l])/(l+1)>(double)(list[head]+sum[r])/(r+1))printf("%.10lf\n",(double)list[head]-(double)(list[head]+sum[r])/(r+1));else printf("%.10lf\n",(double)list[head]-(double)(list[head]+sum[l])/(l+1));}}return 0;
}
[Codeforces939E][三分法]Maximize!相关推荐
- P3382 【模板】三分法,难度⭐⭐⭐
P3382 [模板]三分法 法1 : 三分法 对于一个二次函数[L,R]内取最值,选取两个点x=(2∗l+r)/3,y=(l+2∗r)/3 若f(x)>f(y),那么[y,R]这一段可以舍弃(一 ...
- 【基础算法】二分法(二分答案,二分查找),三分法,Dinkelbach算法,算法详解+例题剖析
目录 一 . 二分法 二分搜索得要求: 二分查找步骤: 二分答案: 玄学的二分(二分答案) 二 . 三分法 例题 三.01分数规划问题相关算法与题目讲解(二分法与Dinkelbach算法) 一 . 二 ...
- CF939E:Maximize! ——题解
http://codeforces.com/problemset/problem/939/E https://vjudge.net/problem/CodeForces-939E 给一个集合,每次两个 ...
- ARC 100 C - Linear Approximation题解---三分法
题目链接: https://arc100.contest.atcoder.jp/tasks/arc100_a 分析: 比赛时做这题想到一个瞎搞的方法就是在平均数上下波动一下取最小值,然后大佬yjw学长 ...
- 【HDU 3400】Line belt(三分法)
题目链接 题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=3400 题意 有两条传送带AB和CD,移动速度分别为p,q. 除了传送带的其他区域移动速度为r ...
- CodeForces - 1506G Maximize the Remaining String(单调栈+贪心)
题目链接:点击查看 题目大意:给出一个长度为 nnn 的字符串,假设共出现了 kkk 种字母,现在要求出一个长度为 kkk 的子序列,满足每种字母只出现一次,且字典序最大 题目分析:和之前牛客上的一道 ...
- C - Maximize GCD(简单数论)
C - Maximize GCD 给定长度为n,(2≤3×105)n, (2 \le 3 \times 10 ^ 5)n,(2≤3×105)的数组a,(1≤ai≤3×105)a, (1 \le a_i ...
- codefoces 939E Maximize!好题
题解 若存在一个子集s满足答案的话,则该子集一定包含集合S的最大值. 反证法证明: 假设s集合中最大的元素为x,S集合中最大的元素为X.则如果把x换成X,最大值增加了X-x,而平均值增量一定不大于X- ...
- 1506G. Maximize the Remaining String
G. Maximize the Remaining String 贪心,放置时,如果前面一个小比他小,并且后面还有,那么就把前面的删除 #include <bits/stdc++.h> u ...
最新文章
- 第三章 “我要点爆”微信小程序云开发之点爆方式页面和爆炸之音页面制作
- 机器学习之贝叶斯分类(python实现)
- cannot create file怎么解决_内核问题解决方法记录
- Spring MVC绑定,无设置器
- mysql 8.0用doc修改密码_MYSQL8.0修改密码流程
- numpy T、transpose()函数、swapaxes()函数
- python mysql操作封装库_python封装mysq操作,进行数据库的增删改
- Jupyter notebook的正确打开方式
- 导数与微分的知识点思维导图_高中生物思维导图知识点总结
- C#动态生成Word文档并填充数据(一)
- 利用反射生成SQL语句
- 飞卢服务器维护什么时候结束,2019年10月8日定期维护公告
- [Python图像处理] 十七.图像锐化与边缘检测之Roberts算子、Prewitt算子、Sobel算子和Laplacian算子
- list对象转map
- 数据结构图和树的区别_树和图数据结构之间的区别
- 一款基于VUE3.0的开源卡密发卡系统
- C语言程序设计(十七)12.12
- PPT无法打开,总是提示修复该如何解决
- 凯悦旗下中高端酒店品牌逸扉在上海亮相
- 港联证券|基金和股票的区别是什么?谁更适合做短线?