社区讨论
贪心求助
学术版参与者 1已保存回复 1
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 1 条
- 当前快照
- 1 份
- 快照标识符
- @lz6x45wt
- 此快照首次捕获于
- 2024/07/29 19:40 2 年前
- 此快照最后确认于
- 2024/07/29 20:46 2 年前
https://www.luogu.com.cn/problem/P2240题目链接
CPP#include <iostream>
#include <cstring>
#include <algorithm>
#include <iomanip>
using namespace std;
int N, T;
int m[105], v[105];
double p[105];
int p_under[105];
double ans;
void bubbleSort(double arr[], int n, int p_under[]) {
for (int i = 0; i < n - 1; i++) { // 循环n-1次
for (int j = 0; j < n - i - 1; j++) { // 每次循环比较n-i-1次
if (arr[j] > arr[j+1]) { // 如果当前位置比下一个位置大,则交换它们的值
int temp = p_under[j];
p_under[j] = p_under[j+1];
p_under[j+1] = temp;
// int temp = arr[j];
// arr[j] = arr[j+1];
// arr[j+1] = temp;
}
}
}
}
int main()
{
double theend;
cin >> N >> T;
for (int i=0;i<N;i++)
{
cin >> m[i] >> v[i];
p[i] = v[i] / m[i];
}
for (int i=0;i<N;i++)
{
p_under[i] = i;
}
bubbleSort(p, N, p_under);
for (int i=N-1;i>=0;i--)
{
if (T-m[p_under[i]]>=0)
{
ans+=v[p_under[i]];
T-=m[p_under[i]];
}
else{
double numerator = v[p_under[i]] * (m[p_under[i]]-T);
double denominator = m[p_under[i]];
theend = numerator / denominator;
ans+=theend;
// cout << numerator << " " << denominator << " " << theend << endl;
break;
}
}
cout << fixed << setprecision(2) << ans;
return 0;
}
只对了一个 发现还没有输入样例下载 求大佬帮忙
回复
共 1 条回复,欢迎继续交流。
正在加载回复...