hoj 1072 活动安排问题
生活随笔
收集整理的這篇文章主要介紹了
hoj 1072 活动安排问题
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
| 活動安排問題 Time Limit:1000MS? Memory Limit:65536K Description 假設要在一會場里安排一批活動,并希望盡可能多的安排活動。設計一個有效的算法計算當所安排的活動最多時,會場的使用時間。會場的使用時間是指活動占用會場的時間,例如一活動在1到23分占用會場,那么會場的使用時間就是23分。 Input 輸入數據是由多組測試數據組成。每組測試數據輸入的第一行有1 個正整數k(k≤8500),表示有k個待安排的活動。接下來的k行中,每行有2個正整數,分別表示k個待安排的活動開始時間和結束時間。時間以0 點開始的分鐘計。 Output 對應每組輸入,輸出的每行是計算出的會場使用時間。 Sample Input 5 1 23 12 28 25 35 27 80 36 50? Sample Output 49? Source wangzhiqun |
[Submit]?? [Go Back]?? [Status]?? [Discuss]
?
?
//13222?wupanlei?1072?Accepted?952K?399MS?G++?0.8K?2009-06-24?08:20:57?#include?<iostream>
#include?<algorithm>
#define?MAX?9000
using?namespace?std;
typedef?struct?node
{
????int?s;
????int?e;
}Data;
class?Party
{
private:
????Data?data[MAX];
????int?summ;
????int?n;
public:
????Party();
????void?Set(int?nn);
????//friend?bool?comp(int?a,int?b);
????int?CalSum();
};
bool?comp(node?a,node?b)
{
????return?a.e<b.e;
}
Party::Party()
{
????summ=0;
}
void?Party::Set(int?nn)
{
????n=nn;
????int?i;
????for(i=0;i<n;i++)
????{
????????cin>>data[i].s>>data[i].e;
????}
}
int?Party::CalSum()
{
????int?j=0,i;
????sort(data+0,data+n,comp);
????summ=data[0].e-data[0].s+1;
????for(i=1;i<n;i++)
????{
????????if(data[i].s>=data[j].e)
????????{
????????????summ+=data[i].e-data[i].s+1;
????????????j=i;
????????}
????}
????return?summ;
}
int?main()
{
????int?nn;
????while(cin>>nn)
????{
????????Party?p;
????????p.Set(nn);
????????cout<<p.CalSum()<<endl;
????}
????return?0;
}
?
轉載于:https://www.cnblogs.com/forever4444/archive/2009/06/24/1509882.html
總結
以上是生活随笔為你收集整理的hoj 1072 活动安排问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: QQ号码采集及邮件发送系统2009
- 下一篇: MyEclipse中消除frame引起的