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        }
相關文章
相關標籤/搜索