为什么会WA呢
查看原帖
为什么会WA呢
479628
zhou_qian_le楼主2021/2/3 23:55

我的思路就是全部计算出单价,按其排序,优先放单价高的,然后装满背包,但是为什么我的代码示例都没过啊

#include <bits/stdc++.h>
//#include "zc2008.h"
using namespace std;

struct datain
{
    int cost;
    int val;
    double djia;
    void calc()
    {
        djia = double(val / cost);
    }
} datainput[110];

bool cmp(datain a, datain b)
{
    return a.djia > b.djia;
}

int main()
{
    int n, t;
    cin >> n >> t;
    for (int i = 0; i < n; i++)
    {
        cin >> datainput[i].cost >> datainput[i].val;
        datainput[i].calc();
    }
    sort(datainput, datainput + n, cmp);
    double plus = 0;
    double totval = 0;
    for (int i = 0; i < n; i++)
    {
        if (datainput[i].cost > t)
        {
            plus = datainput[i].cost - t;
            totval += plus * datainput[i].djia;
            break;
        }
        else
        {
            totval += datainput[i].val;
        }
    }
    printf("%0.2f",totval);
    cout << endl;
    return 0;
}

2021/2/3 23:55
加载中...