当前位置: 代码迷 >> 综合 >> codeforces 1111 B. Average Superhero Gang Power
  详细解决方案

codeforces 1111 B. Average Superhero Gang Power

热度:96   发布时间:2023-12-06 07:36:56.0

题目:Average Superhero Gang Power

思路:
最开始有一个贪心的想法,就是删到只剩下最大的数。
hack数据,来自QvQ:

Input
3 2 10
1 1 1
Output
1.5

但是基于这个贪心思想,可以想到先排序,排序后的序列,一定从前往后顺着删得到的答案更优。
然后O(n)枚举断点就好。

代码:

#include<bits/stdc++.h>
using namespace std;#define maxn 100000
#define read(x) scanf("%d",&x)
#define db doubleint n,K,m;
int a[maxn+5];db sum[maxn+5];int main() {
    read(n),read(K),read(m);for(int i=1;i<=n;i++) read(a[i]);sort(a+1,a+n+1);for(int i=n;i>=1;i--) {
    sum[i]=sum[i+1]+a[i];}db ans=0;for(int i=1;i<=min(n,m+1);i++) {
    db s=0;s=(sum[i]+min((db)m-i+1,K*((db)n-i+1)))/(n-i+1);ans=max(ans,s);}printf("%lf",ans);return 0;
}
  相关解决方案