POJ 3190(优先队列,贪心)

POJ3190node

                                                       摊位预订。
时间限制:1000MS内存限制:65536K。
共提交材料:12959份接受:4 546名特别法官。
描述。

哦,那些挑剔的N(1<;=N<;=50,000)奶牛!他们是如此挑剔,以致于每一头奶牛都只能在某个精确的时间间隔A.B(1<;=A<;=B<;=1,000,000)内挤奶,这包括A和B的倍数。显然,FJ必须建立一个预定系统,以肯定每头奶牛能够分配给她的挤奶时间的摊位。固然,没有一头母牛会与其余母牛分享如此私密的时刻。

经过肯定如下内容来帮助FJ:
牛棚中所需的最低摊位数目,以便每头奶牛都能有本身的私人挤奶时间。
随着时间的推移,奶牛被分配到这些货摊上。
对于每一个测试数据集,许多答案都是正确的;一个程序将对您的答案进行评分。
输入。

第1行:单个整数,N。

行2.N+1:行I+1用两个空格分隔的整数描述COW I的挤奶间隔。
输出量。

第1行:谷仓必须有的最小摊位数量。

行2.N+1:行I+1描述了奶牛挤奶期间我将被分配到的奶牛栏。
测试

Sample Inputspa

5 1 10 2 4 3 6 5 8 4 7

Sample Outputcode

4 1 2 3 2 4

这道题 的意思是,n头牛,每一个牛必须在固定时间吃草且一牛一窝,问最少多少窝,且每头牛是在第几个窝吃的草

能够把每当开了一个窝,变把这个窝存入到以这个窝正在吃草的牛的结束时间进行从小到大排序,优先队列重载一下就ok了blog


 

 1 while(pque.empty()!=1)  2  pque.pop();  3 
 4        for(int i=1;i<=n;++i)  5  {  6            cin>>v[i].l>>v[i].r;  7            v[i].pos=i;  8  }  9 
10        sort(v+1,v+1+n,cmp); 11 
12        pque.push(v[1]); 13        hhh[v[1].pos]=1; 14        int ans=1; 15        for(int i=2;i<=n;++i) 16  { 17            node temp=pque.top(); 18            if(v[i].l>temp.r)       //另外开个窝
19  { 20                hhh[v[i].pos]=hhh[temp.pos]; 21  pque.pop(); 22  pque.push(v[i]); 23  } 24            else
25  { 26                ans++; 27                hhh[v[i].pos]=ans;          //记录位置
28  pque.push(v[i]); 29  } 30        }
相关文章
相关标签/搜索