最少区间覆盖问题

最少区间覆盖问题
 关于区间的往往可以贪心。
pku2376
用最少的线段覆盖一条大线段。
按左边的坐标排序,找左边符合开始的线段中右边最大的。
sort(a,a + n);
    end
= 1 ;
    i
= 0 ;
    tp
=- 1 ;
    cnt
= 0 ;
    
while (end <= T)
    
{
        
if(i>n||cnt>n)
        
{
            printf(
"-1\n");
            
return 0;
        }

        
if(a[i].l<=end)
        
{
            
if(tp<=a[i].r)
            
{
                tp
=a[i].r;
            }

            i
++;
            
if(tp>=T)
            
{
                cnt
++;
                
break;
            }

        }

        
else 
        
{
            end
=tp+1;
            cnt
++;
            tp
=-1;
        }

    }

你可能感兴趣的:(最少区间覆盖问题)