社区讨论
求助,这个代码为啥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 条回复,欢迎继续交流。
正在加载回复...