1 条题解

  • 0
    @ 2025-4-7 21:38:01

    C++ :

    #include <iostream>
    #include <cmath>
    using namespace std;
    int l,m,s[101],t[101],left,right,sum=0;
    int main()
    {
        cin>>l>>m;
        for (int i=1;i<=m;i++) cin>>s[i]>>t[i];
        for (int j=2;j<=m;j++)
        {  
            for (int i=m;i>=j;i--) 
            {
              if (s[i]<s[i-1]) 
              {s[0]=s[i],s[i]=s[i-1],s[i-1]=s[0],
              t[0]=t[i],t[i]=t[i-1],t[i-1]=t[0];}
            }
        }
    //    for (int i=1;i<=m;i++) cout<<s[i]<<" "<<t[i]<<endl;
        int left=s[1]; int right=t[1];
        for (int i=2;i<=m;i++)
        {
            if (s[i]<=right) {right=max(right,t[i]);}
            else 
            {sum+=right-left+1; left=s[i]; right=t[i];}
        }
        sum+=right-left+1;
        cout<<l-sum+1<<endl;
    //    system ("pause");
        return 0;
    }
    
    

    Pascal :

    type
     rec=record
      x,y,l,r,c:longint;
     end;
    var
     ans,l,m,i,x,y,tot:longint;
     tree:array[0..40000] of rec;
    procedure make(l,r:longint);
    var
     now:longint;
    begin
     inc(tot);
     now:=tot;
     tree[now].x:=l;
     tree[now].y:=r;
     if l+1<=r then
     begin
      tree[now].l:=tot+1;
      make(l,(l+r) div 2);
      tree[now].r:=tot+1;
      make((l+r) div 2+1,r);
     end;
    end;
    procedure insert(v,x,y:longint);
    begin
     if (x<=tree[v].x)and(tree[v].y<=y) then
     begin
      inc(tree[v].c);
      exit;
     end;
     if x<=(tree[v].x+tree[v].y) div 2 then insert(tree[v].l,x,y);
     if y>(tree[v].x+tree[v].y) div 2 then insert(tree[v].r,x,y);
    end;
    procedure find(v:longint);
    begin
     if v=0 then exit;
     if tree[v].c>0 then
     begin
      inc(ans,tree[v].y-tree[v].x+1);
      exit;
     end;
     find(tree[v].l);
     find(tree[v].r);
    end;
    begin
     readln(l,m);
     make(1,l+1);
     for i:=1 to m do
     begin
      readln(x,y);
      insert(1,x+1,y+1);
     end;
     find(1);
     //writeln(ans,' ',l);
     writeln(l+1-ans);
    end.
    

    Python :

    # coding=utf-8
    l,m=map(int,input().split())
    a=[]
    s=["true"]*(l+1)
    n=0
    for i in range(m):
        b=list(map(int,input().split()))
        a.append(b)
    
    for i in range(m):
        for j in range(a[i][0],a[i][1]+1):
            s[j]="false"
    
    for k in s:
        if k=="true":
            n+=1
    print(n)
    
    • 1

    信息

    ID
    1786
    时间
    1000ms
    内存
    128MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者