标签:贪心
Time Limit: 1000MS | Memory Limit: 65536K | |||
Total Submissions: 3590 | Accepted: 1284 | Special Judge |
Description
Input
Output
Sample Input
5 1 10 2 4 3 6 5 8 4 7
Sample Output
4 1 2 3 2 4
Hint
Time 1 2 3 4 5 6 7 8 9 10 Stall 1 c1>>>>>>>>>>>>>>>>>>>>>>>>>>> Stall 2 .. c2>>>>>> c4>>>>>>>>> .. .. Stall 3 .. .. c3>>>>>>>>> .. .. .. .. Stall 4 .. .. .. c5>>>>>>>>> .. .. ..Other outputs using the same number of stalls are possible.
Source
#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #include<cmath> #include<queue> #include<stack> #include<vector> #include<set> #include<map> #define L(x) (x<<1) #define R(x) (x<<1|1) #define MID(x,y) ((x+y)>>1) #define epst 1e-8 typedef __int64 ll; #define fre(i,a,b) for(i = a; i <b; i++) #define free(i,b,a) for(i = b; i >= a;i--) #define mem(t, v) memset ((t) , v, sizeof(t)) #define ssf(n) scanf("%s", n) #define sf(n) scanf("%d", &n) #define sff(a,b) scanf("%d %d", &a, &b) #define sfff(a,b,c) scanf("%d %d %d", &a, &b, &c) #define pf printf #define bug pf("Hi\n") using namespace std; #define INF 0x3f3f3f3f #define N 50005 struct stud{ int x,y; int pos; bool operator <(const stud d) const { return y>d.y; } }f[N]; int ans[N]; int k; priority_queue<stud>q; int n; int cmp(stud a,stud b) { if(a.x==b.x) return a.y<b.y; return a.x<b.x; } void solve() { int i,j; stud cur; while(!q.empty())q.pop(); for(i=1;i<=n;i++) { if(q.empty()) { ans[f[i].pos]=++k; q.push(f[i]); continue; } cur=q.top(); if(cur.y<f[i].x) { ans[f[i].pos]=ans[cur.pos]; q.pop(); } else ans[f[i].pos]=++k; q.push(f[i]); } } int main() { int i,j; while(~sf(n)) { for(i=1;i<=n;i++) { sff(f[i].x,f[i].y); f[i].pos=i; } sort(f+1,f+n+1,cmp); k=0; solve(); pf("%d\n",k); for(i=1;i<=n;i++) pf("%d\n",ans[i]); } return 0; }
POJ 3190 Stall Reservations(贪心)
标签:贪心
原文地址:http://blog.csdn.net/u014737310/article/details/45603875