_Sinnan_ 2022-04-26 08:02 采纳率: 100%
浏览 11
已结题

TLE了 xjoi P3581 最大化平均值

题目描述:
有n个物品的重量和价值分别是 wi 和 vi。从中选出k个物品使得单位重量的价值最大。

输入格式:
第一行输入两个整数 n,k
第二行输入n个整数wi
第三行输入n个整数vi
输出格式:
输出一个浮点数,保留两位小数

样例输入:
3 2
2 5 2
2 3 1

样例输出:
0.75

#include<bits/stdc++.h>
using namespace std;
#define maxn 10010
double w[maxn],v[maxn],c[maxn];
int n,k;
bool ok(double ans)
{
for(int i=0;i<n;i++)
c[i]=v[i]-ans*w[i];
sort(c,c+n);
double cnt=0;
for(int i=0;i<k;i++)
cnt+=c[n-1-i];
return cnt>=0;
}
int main()
{
scanf("%d%d",&n,&k);
for(int i=0;i<n;i++)
scanf("%lf",&w[i]);
for(int i=0;i<n;i++)
scanf("%lf",&v[i]);
double l=0,r=1000010;
while(abs(l-r)>1e-6)
{
double mid=(l+r)/2;
if(ok(mid))
l=mid;
else
r=mid;
}
printf("%.2lf\n",r);
return 0;
}

https://xjoi.net/problem/3581

  • 写回答

1条回答 默认 最新

  • _Sinnan_ 2022-04-27 09:18
    关注

    #include

    #include

    #include

    #include

    #include

    #define INF 0x3f3f3f

    using namespace std;

    int n,k;

    int v[500000],w[500000];

    double y[500000];

    bool check(double x)

    {

    for(int i=0;i<n;i++)
    
    {
        y[i]=v[i]-x*w[i];
    
    }
    
    sort(y,y+n);
    
    double sum=0;
    
    for(int i=0;i<k;i++)
    
    {
    
        sum+=y[n-i-1];
    
    }
    
    if(sum>=0)return true;
    
    else return false;
    

    }

    int main()

    {

    cin>>n>>k;
    
    for(int i=0;i<n;i++)
    
    {
    
        cin>>w[i];
    
    }
    
    for(int i=0;i<n;i++)
    
    {
    
        cin>>v[i];
    
    }
    
    double  l=0,r=INF;
    
    for(int i=0;i<100;i++)
    
    {
    
        double mid=(l+r)/2;
    
        if(check(mid))l=mid;
    
        else r=mid;
    
    }
    
    printf("%.2f\n",r);
    

    }

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 5月5日
  • 已采纳回答 4月27日
  • 创建了问题 4月26日

悬赏问题

  • ¥15 Mac系统vs code使用phpstudy如何配置debug来调试php
  • ¥15 目前主流的音乐软件,像网易云音乐,QQ音乐他们的前端和后台部分是用的什么技术实现的?求解!
  • ¥60 pb数据库修改与连接
  • ¥15 spss统计中二分类变量和有序变量的相关性分析可以用kendall相关分析吗?
  • ¥15 拟通过pc下指令到安卓系统,如果追求响应速度,尽可能无延迟,是不是用安卓模拟器会优于实体的安卓手机?如果是,可以快多少毫秒?
  • ¥20 神经网络Sequential name=sequential, built=False
  • ¥16 Qphython 用xlrd读取excel报错
  • ¥15 单片机学习顺序问题!!
  • ¥15 ikuai客户端多拨vpn,重启总是有个别重拨不上
  • ¥20 关于#anlogic#sdram#的问题,如何解决?(关键词-performance)