Supermarket

Supermarket

https://ac.nowcoder.com/acm/contest/1011/A

题目大致意思就是有N件物品,
每件物品有一定价值V且最迟必须在M天以前买完,求超市能够获取的最大利润。
思路:毫无疑问这题可以用贪心的思想来做:
价值越大越优先考虑,并且按其最晚天数卖出,
如果天数已经被占用则往前寻找未使用的天数。
实现:用一个结构体来装商品的价值与最迟天数,
并将其按价值降序排列,价值一样,天数降序排,
再开个数组记录天数是否用过
————————————————————————
原文链接:https://blog.csdn.net/caccepter/java/article/details/81048392
————————————————————————
代码:
#include<bits/stdc++.h>
using namespace std;
const int MaxN=1e4+5;
pair<int,int> a[MaxN];
int n;
void calc() {
priority_queue<int> Q;
for(int i = 0;i < n;i++) {
int p,d;
scanf("%d %d",&p,&d);
a[i] = {d,p};
}
sort(a,a + n);
for(int i = 0;i < n;i++) {
pair<int,int> c = a[i];
Q.push(-c.second);
if(Q.size() > c.first) Q.pop();
}
int ans = 0;
while(!Q.empty()) {
ans += -Q.top();
Q.pop();
}
printf("%d\n",ans);
}
int main()
{
while(scanf("%d",&n) != EOF) calc();
return 0;
}</int>

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务