文章

3

粉丝

0

获赞

33

访问

984

头像
喝饮料问题 题解:
P5128
发布于2026年3月21日 14:03
阅读数 305

#include<bits/stdc++.h>

using namespace std;
struct mw{
    float mi;
    float wi;
};
bool cmp(mw a,mw b)
{
    return a.wi/a.mi<=b.wi/b.mi;//按照每毫升单价排序
}

int main()
{
    float x;
    int n;
    while(cin>>x>>n)
{
    mw s[1005];
    if(x<0&&n<0)break;
    for(int i=0;i<n;i++)
    {
        cin>>s[i].mi>>s[i].wi;
    }
    sort(s,s+n,cmp);
float ans=0;
for(int i=0;i<n;i++)//排好序以后依次遍历,每次能拿完就拿完
{
    if(x>s[i].wi)
    {
        ans+=s[i].mi;
        x-=s[i].wi;
    }
    else
    {
        ans+=x/(s[i].wi/s[i].mi);
 &n...

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发