posts - 195,  comments - 30,  trackbacks - 0
#include<iostream>
#include
<cstdlib>
using namespace std;
int MIN;
struct P
{
    
int  b;
    
int e;
    
int visited;
}arr[
10000];
int comp(const void *arg1, const void *arg2)
{
    
return (*(struct P *)arg1).e < (*(struct P *)arg2).e;
}


  
void func(int LEN,int N,int i,int sb)//LEN是最右边那个点,N是界限,i是开始支持的点,Nsb是次数 
  {
    MIN
=sb;    
    
int start=LEN;    
      
if(LEN>0)
     {
        
while(i<N)
        {
           
if(arr[i].e<LEN)break;
            
else
          {
              
if(arr[i].b<start)
                start
=arr[i].b;
          }     
            i
++;
        }  
        func(start,N,i,sb
+1);
    }    
  }
  
int main()
  {
//freopen("s.txt","r",stdin);
//freopen("key.txt","w",stdout);    
  int LEN,N,j,temp1,temp2;
  cin
>>LEN>>N;
  
while(LEN!=0)
  {
        MIN
=10000;
        
for(j=0;j<N;j++)
        {
        cin
>>temp1>>temp2;
        arr[j].b
=temp1-temp2;
        arr[j].e
=temp1+temp2;
        }
        qsort(arr, N, 
sizeof(arr[0]), comp);
        func(LEN,N,
0,0);
        cout
<<MIN<<endl;
        cin
>>LEN>>N;
  }

  
//system("PAUSE");
  return   0;
  }
posted on 2009-05-16 11:41 luis 阅读(233) 评论(0)  编辑 收藏 引用 所属分类: 贪心*二分

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


<2010年1月>
272829303112
3456789
10111213141516
17181920212223
24252627282930
31123456

常用链接

留言簿(3)

随笔分类

随笔档案

文章分类

文章档案

友情链接

搜索

  •  

最新评论

阅读排行榜

评论排行榜