第二个点求助
查看原帖
第二个点求助
622751
Gril楼主2022/3/30 10:41

除了第二个点其他都过了

#include<bits/stdc++.h>
using namespace std;
struct AC{
    int n;float v;//质量,单价
}ac[100005];
bool pd(AC a,AC b)
{
    return a.v>b.v;
}
int main()
{
    int N,T;
    float m,v;
    cin >> N >> T;
    for(int i = 1; i <= N;i++)
    {
        cin >> m >> v;//输入质量总价
        ac[i].n = m;//记录质量
        ac[i].v = v / (float)m;//记录单价
    }
    sort(ac+1,ac+N,pd);//按照单价排序
    int sum = 0,pos = 1;
    float ans = 0.0;
    while(pos <= N)
    {
        sum += ac[pos].n;ans += (ac[pos].v * ac[pos].n * 1.0);//累加结果
        if(sum>=T){ans = ans + (T - sum + ac[pos].n)*1.0*ac[pos].v - ac[pos].v * ac[pos].n;break;}//如果质量满了就break,减去多余的质量
        pos++;
    }
    if(ans > 0.0)
        printf("%0.2f",ans);
    else
        cout << "0.00";
    return 0;
}

2022/3/30 10:41
加载中...