題目描述 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...