好消息:结果更优,坏消息:0了
查看原帖
好消息:结果更优,坏消息:0了
1457323
jyx130320楼主2025/7/3 20:44
#include<bits/stdc++.h>
using namespace std;
struct f{
    double m,v;
}a[105];
int n,t;
bool cmp(f x,f y){
    return x.v/x.m>y.v/y.m;
}
double jz(int t,int cnt,double mv){
    if(cnt>n||t==0)return mv;
    while(t>=a[cnt].m){
        t-=a[cnt].m;
        mv+=a[cnt].v;
    }
    return max(jz(t,cnt+1,mv),mv+a[cnt].v*(t/a[cnt].m));
}
int main(){
    cin>>n>>t;
    for(int i=1;i<=n;i++){
        cin>>a[i].m>>a[i].v;
    }
    sort(a+1,a+n+1,cmp);
    printf("%.2lf",jz(t,1,0.0));
    return 0;
}

输入

4 50

10 60

20 100

30 120

15 45

样例输出

240.00

我的输出

300.00

都选第一个好像真的最优......

2025/7/3 20:44
加载中...