模拟 - hdu5360 Hiking
来源:互联网 发布:淘宝上好的外贸店 编辑:程序博客网 时间:2024/06/05 14:47
题目:
http://acm.hdu.edu.cn/showproblem.php?pid=5360
题意:
某君要邀请n个人去郊游,每个人都有奇特的要求,对于第i个人,只有当前答应去郊游的人数cur满足MIN[i]<=cur<=MAX[i],他才会答应参加,并且参加后不会反悔,问最多能邀请到多少人去郊游,并给出任意满足题意邀请序列
思路:
先依据所有人min进行排序,当邀请人数为cur时,把数组里所有min等于cur的人放入优先队列,邀请队列中max最小,且max<=cur的那个人
代码:
#include<stdio.h>#include<iostream>#include<string>#include<string.h>#include<math.h>#include<algorithm>#include<vector>#include<queue>#include<stack>#include<map>#include<set>#include<functional>#pragma comment(linker, "/STACK:102400000,102400000")//C++using namespace std;const double PI = 3.141592653589793238462643383279502884197169399;const int MAXINT = 0x7fffffff;const int MAXSIZE = 100000 + 5;const long long INF = 0x7FFFFFFFFFFFFFFF;struct node{ int num; int l,r;};bool operator <(const node&p1, const node&p2){return p1.r>p2.r;}void quick_sort(node arr[],int l,int r){ int i=l,j=r; int x=arr[(l+r)>>1].l; while (i<=j){ while (arr[i].l<x) i++; while (arr[j].l>x) j--; if (i<=j){ swap(arr[i],arr[j]); i++; j--; } } if (i<r) quick_sort(arr,i,r); if (l<j) quick_sort(arr,l,j);}node arr[MAXSIZE];vector<int> ans;priority_queue<node> Q;int main(){ int total; cin>>total; while (total--){ int n; scanf("%d",&n); for (int i=0;i<n;++i){ scanf("%d",&arr[i].l); arr[i].num = i+1; } for (int i=0;i<n;++i){ scanf("%d",&arr[i].r); } quick_sort(arr,0,n-1); int cur=0; int k=0; ans.clear(); while (!Q.empty()) Q.pop(); while (arr[k].l == 0) { Q.push(arr[k]); k++; } while (!Q.empty()){ while (!Q.empty()){ if (Q.top().r<cur) { ans.push_back(Q.top().num); Q.pop(); } else break; } if (!Q.empty()){ ans.push_back(Q.top().num); Q.pop(); cur++; //cout<<cur<<" "<<ans[ans.size()-1]<<endl; } while (arr[k].l == cur) { Q.push(arr[k]); k++; } } while (k<=n-1) {ans.push_back(arr[k].num);k++;} printf("%d\n",cur); for (int i=0;i<ans.size()-1;++i){ printf("%d ",ans[i]); } printf("%d\n",ans[ans.size()-1]); } return 0;}
0 0
- 模拟 - hdu5360 Hiking
- hdu5360 Hiking
- hdu5360--Hiking(优先队列)
- [贪心+优先队列] hdu5360多校联合 第六场 Hiking
- Hiking
- hdu5360优先队列
- hdu5360(优先队列)
- 大署山hiking
- Codeforces489E Hiking
- 1172-Hiking
- 1172-Hiking
- hdu 2425 Hiking Trip
- hdu 2425 Hiking Trip
- 【Codeforces】 489E Hiking
- CodeForces 489E Hiking
- Codeforces 489E Hiking
- 2425 Hiking Trip
- hdu 2425 Hiking Trip
- HTTP通信中的请求转发和请求重定向
- HDU 5365 Run (简单分析+暴力枚举)
- 前端设计之CSS布局:上中下三栏自适应高度CSS布局
- 网贷系统架构——前端框架的选择
- POJ 3274 Gold Balanced Lineup
- 模拟 - hdu5360 Hiking
- 表的基本操作
- 图的深度遍历
- 静态库和动态库
- matlab/C混合编程--mex文件的编写、编译、调用
- Sensu 简介
- android 中的Uri
- Linux专业名词
- 观察者设计模式