博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

codevs 1214 线段覆盖

Posted on 2016-01-12 15:52  shaoweiyi  阅读(185)  评论(0编辑  收藏  举报

巫泽俊 《挑战》P42

贪心

#include <iostream>
#include <vector>
#include <sstream>
#include <string>
#include <cmath>
#include <stack>
#include <algorithm>
using namespace std;

pair<int,int> p[105];
int a[105];
int b[105];
int main()
{
int n;
cin>>n;
for(int i=1;i<n+1;++i)
{
    cin>>a[i]>>b[i];
    if(a[i]>=b[i]) {int x=b[i];b[i]=a[i];a[i]=x;}
    p[i].first=b[i];
    p[i].second=a[i];
}
sort(p+1,p+n+1);
int cnt=0;
int temp=-10000;///temp表示选中的线段延伸的最远处 考虑输入数据正负
    for(int i=1;i<n+1;++i)
    {
        if(p[i].second>=temp)
        {
            cnt++;
            temp=p[i].first;
        }
    }
    cout<<cnt<<endl;
}