FOJ 1230 区间相交问题

  区间相交问题
Time Limit:1s Memory limit:32M
Accepted Submit:33 Total Submit:78

★问题描述:

给定 x 轴上 n 个闭区间。去掉尽可能少的闭区间,使剩下的闭区间都不相交。

★算法设计:

对于给定的 n 个闭区间,计算去掉的最少闭区间数。

★数据输入:

对于每组输入数据,输入数据的第一行是正整数 n (1<=n<=40,000),表示闭区间数。接下来的 n 行中,每行有 2 个整数,分别表示闭区间的 2 个端点。

★结果输出:

输出计算出的去掉的最少闭区间数。

★输入示例

3

10 20

15 10

20 15

★输出示例

2

 

Original: FJ CFCS 2008

 

按照右端点从小到大的排

然后贪心

其实这也是在大牛的指导下完成的............

  1. #include <iostream>
  2. #include <algorithm>
  3. using namespace std;
  4. struct XML
  5. {
  6.     int _strat_vale,_end_vlaue;
  7.     bool operator<(const XML&x) const
  8.     {
  9.         return _end_vlaue<x._end_vlaue;
  10.     }
  11. }xml[40001];
  12. int main()
  13. {
  14.     int n,i,a,b,res,s;
  15.     while(cin>>n)
  16.         {
  17.             for(i=1;i<=n;i++)
  18.             {
  19.                 scanf("%d%d",&a,&b);
  20.                 if(a>b)
  21.                     a^=b,b^=a,a^=b;
  22.                 xml[i]._strat_vale=a;
  23.                 xml[i]._end_vlaue=b;
  24.             }
  25.             sort(xml+1,xml+1+n);
  26.             s=xml[1]._end_vlaue;
  27.             res=1;
  28.             for(i=2;i<=n;i++)
  29.                     if(s<xml[i]._strat_vale)
  30.                         res++,s=xml[i]._end_vlaue;
  31.             cout<<n-res<<endl;
  32.         }
  33. }

 

你可能感兴趣的:(xml,算法)