社区讨论

求助,这个代码为啥ac了两个样例,剩下三个是re?

P2240【深基12.例1】部分背包问题参与者 2已保存回复 2

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
2 条
当前快照
1 份
快照标识符
@lo92ecjs
此快照首次捕获于
2023/10/28 04:27
2 年前
此快照最后确认于
2023/10/28 04:27
2 年前
查看原帖
CPP
#include<iostream>
#include<vector>
#include<string.h>
#include<stdlib.h>
#include<stdio.h>
#include<math.h>
#include<algorithm>

#define ll long long
#define pii pair<int,int>
#define pdi pair<double,int>
#define x first
#define y second
using namespace std;
pii a[105];
pdi b[105];
bool cmp(pdi a1, pdi a2)
{
    return a1.x>a2.x;
}
int main()
{
    int n, m;
    double res = 0.0;
    cin >> n >> m;
    for (int i = 0; i < n; i++)
    {
        cin >> a[i].x >> a[i].y;
        b[i].x = (double)a[i].y / (double)a[i].x;
        b[i].y = a[i].x;
    }
 
    sort(b, b + m, cmp);
    for (int i = 0;;)
    {
        if (b[i].y <= m)
        {
            res += (b[i].x * b[i].y);
            m -= b[i++].y;
        }
        else
        {
            res += (m * b[i].x);
            break;
        }
        if (m == 0)break;
    }

    printf("%.2f", res);
    return 0;
}

回复

2 条回复,欢迎继续交流。

正在加载回复...