codevs 1643 線段覆蓋 3 貪心 快排

2021-08-01 15:58:12 字數 949 閱讀 1863

題目描述 description

在乙個數軸上有n條線段,現要選取其中k條線段使得這k條線段兩兩沒有重合部分(端點可以重合),問最大的k為多少。

輸入描述 input description

輸入格式

輸入檔案的第1行為乙個正整數n,下面n行每行2個數字ai,bi,描述每條線段。

輸出描述 output description

輸出格式

輸出檔案僅包括1個整數,為k的最大值

樣例輸入 sample input

30 2

2 41 3

樣例輸出 sample output

2資料範圍及提示 data size & hint

資料範圍

對於20%的資料,n≤10;

對於50%的資料,n≤1000;

對於70%的資料,n≤100000;

對於100%的資料,n≤1000000,0≤ai<bi≤1000000。

思路:和線段覆蓋 1思路一樣,只不過資料變大了,不能暴力過。。。

**如下

#include 

#include

#include

#include

#include

using

namespace

std;

const

int n=1000005;

struct node

line[n];

bool cmp(node a,node b)

}sort(line+1,line+1+n,cmp);

int r=line[1].r;

sum=1;

for(int i=2;i<=n;i++)

}printf("%d\n",sum);

return

0;}

codevs 1643 線段覆蓋 3

資料大到nlogn沒法做。然而我做1的時候用的就是貪心演算法。所以無影響。並且到這個地步。基本上就是卡io操作了 輸入輸出 cin cout會比較慢 關閉流同步後能快一倍 再快就只能用scanf printf 或者手寫讀入函式 讀入優化技巧 includeusing namespace std de...

1643 線段覆蓋 3

時間限制 2 s 空間限制 256000 kb 題目等級 gold 在乙個數軸上有n條線段,現要選取其中k條線段使得這k條線段兩兩沒有重合部分 端點可以重合 問最大的k為多少。輸入描述 input description 輸入格式 輸入檔案的第1行為乙個正整數n,下面n行每行2個數字ai,bi,描述...

Codevs 線段覆蓋1 2 3 4 5

對於線段覆蓋1 3,貪心,每次選取末端點靠前的,o n 掃一遍即可 話說這個題似乎排序最佔時間 當然dp也可以 include include define maxn 1000000 5 using namespace std struct line l maxn int main sort l 1...