1 条题解
-
0
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
- 上传者