1324:【例6.6】整數區間
阿新 • • 發佈:2019-02-09
描述 struct 接下來 -s return idt 空格 時間限制 continue
主要還是貪心
吧區間按endtime排列,分別取最後一個數然後砍一部分,一個個的砍
1324:【例6.6】整數區間時間限制: 1000 ms 內存限制: 65536 KB 提交數: 1614 通過數: 1020 【題目描述】請編程完成以下任務: 1.從文件中讀取閉區間的個數及它們的描述; 2.找到一個含元素個數最少的集合,使得對於每一個區間,都至少有一個整數屬於該集合,輸出該集合的元素個數。 【輸入】首行包括區間的數目n,1≤n≤10000,接下來的n行,每行包括兩個整數a,b,被一空格隔開,0≤a≤b≤10000,它們是某一個區間的開始值和結束值。 【輸出】第一行集合元素的個數,對於每一個區間都至少有一個整數屬於該區間,且集合所包含元素數目最少。 【輸入樣例】4 3 6 2 4 0 2 4 7 【輸出樣例】2 |
#include<iostream> #include<algorithm> using namespace std; struct xx{ int s,e; }; xx a[10005]; int n; bool cmp(xx x1,xx x2){ return x1.e<x2.e; } int main(){ cin>>n; for(int i=0;i<n;i++){ cin>>a[i].s>>a[i].e; } sort(a,a+n,cmp); int ss=0,i=1,ans=1; while(i<n){ if(a[ss].e>=a[i].s){ i++; continue; } if(a[ss].e<a[i].s){ ans++; ss=i; i++; } } cout<<ans<<endl; return 0; }
1324:【例6.6】整數區間