• uva 10020 Minimal coverage


    http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=961

    贪心,排序,对左端点贪,找最大右端点。

     1 #include <cstdio>
     2 #include <cstring>
     3 #include <algorithm>
     4 #define maxn 6000000
     5 using namespace std;
     6 
     7 int t,m;
     8 int t1;
     9 int ll[maxn],rr[maxn];
    10 struct node
    11 {
    12     int l,r;
    13     int id;
    14     bool operator <(const node &a)const
    15     {
    16         return (l<a.l)||(l==a.l&&r>a.r);
    17     }
    18 } p[maxn],ans[maxn];
    19 
    20 int main()
    21 {
    22     scanf("%d",&t);
    23     while(t--)
    24     {
    25         t1=0;
    26         scanf("%d",&m);
    27         int cnt=0;
    28         int l,r;
    29         int num=0;
    30         while(scanf("%d%d",&l,&r)!=EOF)
    31         {
    32             if(l==0&&r==0) break;
    33             if(l>m||r<0) continue;
    34             p[cnt].id=num;
    35             p[cnt].l=l;
    36             p[cnt++].r=r;
    37         }
    38         sort(p,p+cnt);
    39         bool flag1=false;
    40         int ll=0,rr=0;
    41         while(1)
    42         {
    43             if(ll>=m)
    44             {
    45                 break;
    46             }
    47             flag1=false;
    48             rr=0;
    49             int pos;
    50             for(int i=0; i<cnt; i++)
    51             {
    52                 if(p[i].l<=ll&&p[i].r>rr)
    53                 {
    54                     pos=i;
    55                     rr=p[i].r;
    56                     flag1=true;
    57                 }
    58             }
    59             if(flag1)
    60             {
    61                t1++;
    62                ans[t1]=p[pos];
    63                ll=rr;
    64             }
    65             else break;
    66         }
    67         if(flag1)
    68         {
    69             printf("%d
    ",t1);
    70             for(int i=1; i<=t1; i++)
    71             {
    72                 printf("%d %d
    ",ans[i].l,ans[i].r);
    73             }
    74         }
    75         else printf("0
    ");
    76     }
    77     return 0;
    78 }
    View Code
  • 相关阅读:
    实验四 主存空间的分配和回收模拟
    实验一
    实验3观后感
    实验三进程调度模拟程序
    实验2作业调度
    0909 学习操作系统
    实验四 主存空间的分配和回收模拟
    实验三 同学互评
    实验三 进程调度模拟程序
    实验二 作业调度模拟程序
  • 原文地址:https://www.cnblogs.com/fanminghui/p/4020537.html
Copyright © 2020-2023  润新知