橙题RE一个点求dalao解答
查看原帖
橙题RE一个点求dalao解答
756529
progress_from0楼主2023/7/18 10:01
#include <bits/stdc++.h>
#define ll long long

using namespace std;
const int maxn=110;
ll n,t;
double ans;

struct Node{
	double m,v;
	friend bool operator<(Node a,Node b){
		return a.v/a.m>b.v/b.m;
	}
}mon[maxn];

inline ll read(){
    ll s=0,w=1;
    char ch=getchar();
    while(ch<'0'||ch>'9'){if(ch=='-')w=-1;ch=getchar();}
    while(ch>='0'&&ch<='9')s=s*10+ch-'0',ch=getchar();
    return s*w;
}

int main(){
	n=read();t=read();
	for(int i=1;i<=n;i++){
		mon[i]={read(),read()};
	}
	sort(mon+1,mon+1+n);
	ll cnt=0;
	while(t>0){
		if(mon[++cnt].m>t){
			ans+=mon[cnt].v*t/mon[cnt].m;
			printf("%.2f\n",ans);
			return 0;
		}
		t-=mon[cnt].m;
		ans+=mon[cnt].v;
	}
	return 0;
}

RE记录

2023/7/18 10:01
加载中...