Codeforces 1201C. Maximum Median
看到中位数考虑先把数排序一下
然后有个显然的贪心,一个数增加后一定不能比下一个数大,不然我们直接增加下一个数显然更优
所以初始时的中位数操作后也是中位数
那么我们只要考虑中间再往后怎么加使得答案最大
为了使中位数比较大当然先把中间位置加到和下一个位置一样大,然后为了继续增大又要把后面两个位置增大,然后是后面三个...
所以直接枚举和中间往后第几个即可
设最终答案为 $ans$ ,中间往后一共有 $x$ 个位置一起加,初始时的数列为 $a_i$
那么 $ans*x=(\sum_{i=mid}^{mid+x}a_i)+K$,并且注意 $ans$ 不能超过 $a_{mid+x+1}$
所以最终答案为 $min( \left \lfloor \frac {(\sum_{i=mid}^{mid+x}a_i)+K}{x}\right \rfloor , a_{mid+x+1} )$
注意此时 $a_{n+1}$ 为 $INF$
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
using namespace std;
typedef long long ll;
inline int read()
{
int x=,f=; char ch=getchar();
while(ch<''||ch>'') { if(ch=='-') f=-; ch=getchar(); }
while(ch>=''&&ch<='') { x=(x<<)+(x<<)+(ch^); ch=getchar(); }
return x*f;
}
const int N=2e5+;
const ll INF=1e18;
ll n,K,a[N];
int main()
{
n=read(),K=read();
for(int i=;i<=n;i++) a[i]=read();
sort(a+,a+n+);
int m=(n+)/; a[n+]=INF;
ll sum=,ans=a[m];
for(int i=m;i<=n;i++)
{
sum+=a[i];
if((sum+K)/(i-m+)<a[i]) continue;
if((sum+K)/(i-m+)<=a[i+])
ans=max(ans,(sum+K)/(i-m+));
else ans=max(ans,a[i+]);
}
printf("%lld\n",ans);
return ;
}
Codeforces 1201C. Maximum Median的更多相关文章
- Codeforces 484B Maximum Value(高效+二分)
题目链接:Codeforces 484B Maximum Value 题目大意:给定一个序列,找到连个数ai和aj,ai%aj尽量大,而且ai≥aj 解题思路:类似于素数筛选法的方式,每次枚举aj,然 ...
- Codeforces C. Maximum Value(枚举二分)
题目描述: Maximum Value time limit per test 1 second memory limit per test 256 megabytes input standard ...
- C. Maximum Median 二分
C. Maximum Median 题意: 给定一个数组,可每次可以选择一个数加1,共执行k次,问执行k次操作之后这个数组的中位数最大是多少? 题解:首先对n个数进行排序,我们只对大于中位数a[n/2 ...
- Codeforces Round #577 (Div. 2) C. Maximum Median (模拟,中位数)
题意:给你一个长度为奇数\(n\)的序列.你可以对任意元素加上\(k\)次\(1\),求操作后的中位数最大. 题解:先对序列进行排序,然后对中位数相加,如果中位数和后面的元素相等,就对后面所有和当前中 ...
- Codeforces Round #577 (Div. 2) C. Maximum Median
题意:就是给一n(奇数)个元素数组,可以对它的元素执行k次+1操作,递增排序,求中位数最大是多少. 那我们在排完序之后,中位数前的元素可以不管它,只要对中位数后的操作就行,我们要判断和中位数相等的元素 ...
- 【22.70%】【codeforces 591C】 Median Smoothing
time limit per test2 seconds memory limit per test256 megabytes inputstandard input outputstandard o ...
- [codeforces 508E]Maximum Matching
题目:Maximum Matching 传送门:http://codeforces.com/contest/1038/problem/E 分析: 一个块拥有{color1,val,color2},两个 ...
- codeforces B.Maximum Absurdity 解题报告
题目链接:http://codeforces.com/contest/332/problem/B 题意:在一个序列中,在所有长度为k的区间里找出两个不重叠的最大和,输出这两个最大和所对应的开头的位置a ...
- codeforces 590A A. Median Smoothing(思维)
题目链接: A. Median Smoothing time limit per test 2 seconds memory limit per test 256 megabytes input st ...
随机推荐
- 同样的WiFi,手机能连上网,电脑不能。错误代码DNS_PROBE_POSSIBLE
今天电脑不知打为撒,出了这样个毛病,原因不明.先试着用电脑管家修复,无效.找了网上的很多办法,排除了dns.ip之类的问题.最后在贴吧里看到大神的解决办法,实测简单有效.链接http://tieba. ...
- Vue+elementUI+springboot+mybatis demo教程(二)
安装配置node.js安装vue并搭建前台项目前台项目引入elementUI前台项目引入axios本篇主要记录前台项目搭建之前的环境准备,首先要安装node.js(node官网),进行相关配置等. 安 ...
- hearthbuddy中的Class276
构造函数 需要注意的是this.intptr_0 = this.method_18("mono.dll"); 所以,这个类里面的操作,最后是和mono.dll相关的 interna ...
- VS Code 调试 Golang 出现 Failed to continue: Check the debug console for details
VS Code断点调试Golang时候,弹出提示:Failed to continue: Check the debug console for details 点击Open launch.json, ...
- vmvare ubuntu虚拟机固定ip设置
1.vmvare网络设置 2.window网络设置 3.ubuntu网络设置 先ifconfig 查看ip 已经设置为192.168.122.128 sudo vim /etc/network/int ...
- C#卸载加载到进程里的dll
参考 DLL卸载 VC实现DLL注入之DLL卸载 CreateToolhelp32Snapshot (kernel32) CreateToolhelp32Snapshot函数 RegAsm安装卸载办法
- 我非要捅穿这 Neutron(四)Open vSwitch in Neutron
目录 文章目录 目录 前文列表 OvS In Neutron 网络拓扑 OvS In Neutron 网络实现模型 双节点混合平面网络 双节点网络拓扑 OvS Bridges 与初始流表项 OvS b ...
- char与varchar的区别
char的长度是不可变的,而varchar的长度是可变的,也就是说, 定义一个char[10]和varchar[10],如果存进去的是‘csdn’, 那么char所占的长度依然为10, 除了字符‘cs ...
- koa cookie使用
1 .Koa 中设置 Cookie 的值 ctx.cookies.set(name, value, [options]) 通过 options 置 设置 cookie name 的 value : ...
- 问题 1014: [编程入门]阶乘求和python):(本地测试正确;但提交不对!!??)求教
问题 1014: [编程入门]阶乘求和 时间限制: 1Sec 内存限制: 128MB 提交: 27629 解决: 5450 题目描述 求Sn=1!+2!+3!+4!+5!+…+n!之值,其中n是一个数 ...