C - Stall Reservations 贪心算法
来源:互联网 发布:斑马网络招聘 编辑:程序博客网 时间:2024/05/16 02:59
题意:大致是是将一些不想交的区间合并,问合并之后,这些区间最少的组数。
这道想了好几天,一开始看到这道题目之后,就有了思路,很认真的用了两个循环,并且在过了
测试数据,马上就提交,哎,最担心的TLE还是出现了。
然后就开始在想怎么做这道题,实在想不出来。然后就来到我们学校一位大神的博客。
看到要用优先队列,这对于正在学贪心的算法的我,实在是一个挑战,然后看了看解题报告,才逐渐的开始明白。
这也是我第一次用优先队列做贪心题目。
参考:点击打开链接
#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>#include<queue>using namespace std;const int maxn=60000;int n,use[maxn];struct node{ int l; int r; int pos; bool operator <(const node &a)const { if(r==a.r) return l>a.l; return r>a.r; }} a[maxn];priority_queue<struct node> q;int cmp(struct node a,struct node b){ if(a.l==b.l) return a.r<b.r; return a.l<b.l;}int main(){ int n; scanf("%d",&n); for(int i=0;i<n;i++) { scanf("%d%d",&a[i].l,&a[i].r); a[i].pos=i; } sort(a,a+n,cmp); q.push(a[0]); use[a[0].pos]=1; int kj=1; for(int i=1;i<n;i++) { if(!q.empty()&&q.top().r<a[i].l) { use[a[i].pos]=use[q.top().pos]; q.pop(); } else { kj++; use[a[i].pos]=kj; } q.push(a[i]); } printf("%d\n",kj); for(int i=0;i<n;i++) printf("%d\n",use[i]); return 0;}
0 0
- C - Stall Reservations 贪心算法
- POJ3190 Stall Reservations 贪心
- POJ3190 Stall Reservations 【贪心】
- Stall Reservations - POJ3190 贪心
- poj Stall Reservations(贪心)
- Stall Reservations - POJ 3190 贪心
- POJ 3190 - Stall Reservations(贪心)
- Stall Reservations (poj 3190 贪心)
- poj 3190 Stall Reservations(贪心)
- poj 3190 Stall Reservations 贪心
- POJ-3190 Stall Reservations(贪心)
- POJ 3190 Stall Reservations(贪心)
- POJ3190:Stall Reservations(贪心)
- POJ 3190 - Stall Reservations(贪心)
- POJ 3190 Stall Reservations(贪心)
- POJ 3190 Stall Reservations 【贪心 区间】
- Poj 3190 Stall Reservations【贪心+优先队列】
- POJ 3190(Stall Reservations 区间贪心)
- js 获取复选框所在行
- T2: 一种能累积计算积分的EC2实例类型
- Centos自建集群搭配细化
- 树状数组
- ARM指令集与Thumb指令集 区别 与 用途 总结
- C - Stall Reservations 贪心算法
- 内部负载平衡
- 如何在T-sql 中实现数组的功能
- poj1830 开关问题 高斯消元
- CLSIDFromProgID和ProgIDFromCLSID的查找位置
- Ubuntu下解压rar文件的方法
- Oracle开发中open_form,call_form,new_form 的区别 .
- Cobbler全自动批量安装部署Linux系统
- Hadoop源码导入Eclipse