1. 程式人生 > >1324:【例6.6】整數區間

1324:【例6.6】整數區間

描述 struct 接下來 -s return idt 空格 時間限制 continue

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
主要還是貪心 吧區間按endtime排列,分別取最後一個數然後砍一部分,一個個的砍
#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】整數區間