茶颜悦色
Posted liulex
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了茶颜悦色相关的知识,希望对你有一定的参考价值。
扫描线
线段树开4倍空间谜之WA
#include<bits/stdc++.h> using namespace std; #define maxn 100005 struct Nod int x,y; bool f;///记录左右端点? N[200005]; struct Tree int d; int lazy; T[maxn*7]; vector<int> A; bool cmp(Nod a,Nod b) if(a.y==b.y)return a.f==0; return a.y<b.y; void pushdown(int x) T[x<<1].d+=T[x].lazy; T[x<<1].lazy+=T[x].lazy; T[x<<1|1].d+=T[x].lazy; T[x<<1|1].lazy+=T[x].lazy; T[x].lazy=0; void pushup(int x) T[x].d=max(T[x<<1].d,T[x<<1|1].d); void update(int l,int r,int ll,int rr,int v,int x) if(l>=ll&&r<=rr) T[x].d+=v; T[x].lazy+=v; return; int mid=(l+r)>>1; pushdown(x); if(ll<=mid) update(l,mid,ll,rr,v,x<<1); if(rr>mid) update(mid+1,r,ll,rr,v,x<<1|1); pushup(x); int n,k; int main() scanf("%d%d",&n,&k); int x,y; for(int i=0;i<n;i++) scanf("%d%d",&x,&y); A.push_back(x); A.push_back(x+k); N[i]=Nodx,y,1; N[i+n]=Nodx,y+k,0; //sort(A,A+n); sort(A.begin(),A.end()); unique(A.begin(),A.end()); sort(N,N+2*n,cmp); int ans=0; for(int i=0;i<2*n;i++) int l=lower_bound(A.begin(),A.end(),N[i].x)-A.begin()+1; int r=lower_bound(A.begin(),A.end(),N[i].x+k)-A.begin()+1; if(N[i].f) update(1,len,l,r,1,1); else update(1,len,l,r,-1,1); ans=max(ans,T[1].d); //cout<<ans<<endl; cout<<ans<<‘\n‘;
以上是关于茶颜悦色的主要内容,如果未能解决你的问题,请参考以下文章