求助离散化板子题
查看原帖
求助离散化板子题
246331
mystic_qwq楼主2024/1/7 09:31

80分 WA#8 #9

n,b[40001],btop,c[40001],ctop,l[20001],r[20001],a[40002],ans;
cmp(int*a,int*b){return*a-*b;}
bnrsch(t){
  int L=1,R=ctop,mid;
  do{
    if(c[mid=L+R>>1]==t)return mid;
    if(c[mid]>t)R=mid;else L=mid+1;
  }while(L<R);
  return L;
}
main(){
  scanf("%d",&n);
  for(int i=1;i<=n;++i)scanf("%d%d",l+i,r+i),b[++btop]=l[i],b[++btop]=r[i];
  qsort(b+1,btop,4,cmp);b[0]=-2147483648;for(int i=1;i<=btop;++i)if(b[i]!=b[i-1])c[++ctop]=b[i];
  for(int i=1;i<=n;++i){
    ++a[bnrsch(l[i])],--a[bnrsch(r[i])+1];
  }
  for(int i=1;i<=ctop;++i)
    if(a[i]+=a[i-1])ans+=c[i]-c[i-1];
  printf("%d",ans);
}

2024/1/7 09:31
加载中...