码迷,mamicode.com
首页 > 其他好文 > 详细

POJ 3190 Stall Reservations(贪心)

时间:2015-05-10 09:53:44      阅读:150      评论:0      收藏:0      [点我收藏+]

标签:贪心

Stall Reservations
Time Limit: 1000MS   Memory Limit: 65536K
Total Submissions: 3590   Accepted: 1284   Special Judge

Description

Oh those picky N (1 <= N <= 50,000) cows! They are so picky that each one will only be milked over some precise time interval A..B (1 <= A <= B <= 1,000,000), which includes both times A and B. Obviously, FJ must create a reservation system to determine which stall each cow can be assigned for her milking time. Of course, no cow will share such a private moment with other cows. 

Help FJ by determining:
  • The minimum number of stalls required in the barn so that each cow can have her private milking period
  • An assignment of cows to these stalls over time
Many answers are correct for each test dataset; a program will grade your answer.

Input

Line 1: A single integer, N 

Lines 2..N+1: Line i+1 describes cow i‘s milking interval with two space-separated integers.

Output

Line 1: The minimum number of stalls the barn must have. 

Lines 2..N+1: Line i+1 describes the stall to which cow i will be assigned for her milking period.

Sample Input

5
1 10
2 4
3 6
5 8
4 7

Sample Output

4
1
2
3
2
4

Hint

Explanation of the sample: 

Here‘s a graphical schedule for this output: 

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!