UVA 1316 Supermarket
来源:互联网 发布:怎么在excel里编程 编辑:程序博客网 时间:2024/05/16 05:36
题意:有N个物品,每个物品在都有一个截止日期,如果在截止日期之前(包括截止日期)卖出将会获得相应的利润,卖出物品需要一个单位时间,问最多能获得多少利润?
解法:有两种做法,一个是优先队列,另一个用并查集;
并查集的做法是,先按照价值降序排序,从价值大的往后扫,当i这个物品被卖了,则fa[i] = getfa(fa[i]) - 1;这样做的目的是让和它一样的截止时间的物品可以在截止日期之前有机会被卖出。
#include <iostream>#include <cstring>#include <cstdio>#include <algorithm>using namespace std;struct p{ int x,y;}a[11111];bool comp(p a ,p b){ return a.x>b.x;}int fa[11111];void init(int x){ for(int i = 0 ; i <= x ; i++) fa[i] = i;}int getfa(int x){ return fa[x] == x ? x : fa[x] = getfa(fa[x]);}int main(){ int n ; while(scanf("%d",&n)==1) { int maxt = 0; for(int i = 0 ; i < n ; i++) { scanf("%d%d",&a[i].x,&a[i].y); maxt = max(maxt,a[i].y); } init(maxt); sort(a,a+n,comp); int ans = 0; for(int i = 0 ; i < n ; i++) { int t = getfa(a[i].y); if(t > 0) { ans += a[i].x; fa[t] = t - 1; } } printf("%d\n",ans); } return 0;}
0 0
- UVa 1316 - Supermarket
- UVA 1316 Supermarket
- uva 1316 - Supermarket(贪心)
- uva 1316 - Supermarket(贪心)
- UVA 1316 - Supermarket(贪心+经典问题)
- (advanced) UVA 优先队列+贪心 1316 Supermarket
- UVa 1316 Supermarket 解题报告(贪心)
- Supermarket
- Supermarket
- Supermarket
- Supermarket
- Supermarket
- Supermarket
- Supermarket
- Supermarket
- Supermarket Equipment
- pku1456 Supermarket
- zoj1731-Supermarket
- Git 命令大全
- GET/POST请求
- 矩阵杂项
- C#设计模式(十二)命令模式
- Cocos2d-x3.2实现虚拟摇杆多点触摸-----沈大海
- UVA 1316 Supermarket
- pat 1080
- Java开发者易犯错误Top10
- LONGEST VALID PARENTHESES
- Section 1.1 PROB Greedy Gift Givers
- 小学生必背古诗70首
- What is Fast Tracking and Crashing?
- Cocos2d-x3.2游戏的核心循环在Application,如何处理FPS不稳------沈大海
- 编程之美题之电话号码对应英文单词