weixin_45780694 2019-10-21 23:18
浏览 166

两个程序有什么不同吗?为什么一个AC一个WA?

https://vjudge.net/contest/334728#problem/A
题目也可以找上面的网址 Average Superhero Gang Power
图片说明

第一张wrong answer

#include<iostream>
#include<algorithm>
#include<cstdio>
using namespace std;
double s[10000007];
long long a[1000005];
int main()
{
    int n,k,m,ans=0,p=0;//英雄数量,可以操作某个英雄的最次数,总的最大操作次数
    cin>>n>>k>>m;
    for(int i=1;i<=n;i++){cin>>a[i];ans+=a[i];}
    sort(a+1,a+1+n);
    a[n+1]=0;
    int z=min(n,m);
    for(int i=0;i<=z;i++)//i指删除数量 
    {
        s[i]=ans+min((long long )(m-i),(long long )k*(n-i));
        s[i]-=p;
        p=p+a[i+1];
        if(i==n)s[i]=0;
        else s[i]=s[i]/(n-i);
    }
    sort(s,s+z+1);
    printf("%0.20f",s[z]);
}

第二张 AC

#include <iostream>
#include<algorithm>
#include<cstdio>
using namespace std;
typedef long long LL;
int arr[1000006];
double ans;
int main() {
    int n, k, m;
    scanf("%d%d%d", &n, &k, &m);
    LL sum = 0;
    for (int i=1;i<=n;i++)
    {
        scanf("%d", &arr[i]);
        sum += arr[i];
    }
    sort(arr + 1, arr + 1 + n);
    for (int i=0;i<n&&i<=m;i++) 
    {
        sum -= arr[i];
        ans = max(ans, (sum + min(1LL * m - i, 1LL * k * (n - i))) * 1.0 / (n - i));
    }
    printf("%0.20f", ans);
    return 0;
}

  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥15 MCNP里如何定义多个源?
    • ¥20 双层网络上信息-疾病传播
    • ¥50 paddlepaddle pinn
    • ¥20 idea运行测试代码报错问题
    • ¥15 网络监控:网络故障告警通知
    • ¥15 django项目运行报编码错误
    • ¥15 请问这个是什么意思?
    • ¥15 STM32驱动继电器
    • ¥15 Windows server update services
    • ¥15 关于#c语言#的问题:我现在在做一个墨水屏设计,2.9英寸的小屏怎么换4.2英寸大屏