Time Limit:1000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64u
Description
Input
Output
Sample Input
1 5 1 4 2 6 8 10 3 4 7 10
Sample Output
4
开始没有离散化处理导致内存超了,离散化就过了。。。。
/************************************************************************* > File Name: B.cpp > Author: acvcla > QQ: 1319132622 > Mail: acvcla@gmail.com > Created Time: 2014年10月04日 星期六 16时24分37秒 ************************************************************************/ #include<iostream> #include<algorithm> #include<cstdio> #include<vector> #include<cstring> #include<map> #include<queue> #include<stack> #include<string> #include<cstdlib> #include<ctime> #include<set> #include<math.h> using namespace std; typedef long long LL; const int maxn = 1e5 + 10; #define rep(i,a,b) for(int i=(a);i<(b);i++) #define pb push_back short int col[maxn<<3]; bool v[maxn<<2]; int ll[maxn],rr[maxn],ttp[maxn<<3]; void push_down(int o){ if(col[o]!=-1){ col[o<<1]=col[o<<1|1]=col[o]; col[o]=-1; } } void push_up(int o){ if(col[o<<1]==col[o<<1|1])col[o]=col[o<<1]; else col[o]=-1; } int ql,qr,x; void built(int o,int l,int r) { col[o]=0; if(l==r)return; int M=(l+r)>>1; built(o<<1,l,M); built(o<<1|1,M+1,r); } void Modify(int o,int l,int r){ if(ql<=l&&qr>=r){ col[o]=x; return; } int M=(l+r)>>1; push_down(o); if(ql<=M)Modify(o<<1,l,M); if(qr>M)Modify(o<<1|1,M+1,r); push_up(o); } int query(int o,int l,int r){ if(col[o]!=-1){ if(!col[o]||v[col[o]])return 0; else{ v[col[o]]=true; return 1; } } if(l==r)return 0; int M=(l+r)>>1; push_down(o); return query(o<<1,l,M)+query(o<<1|1,M+1,r); } int main(){ ios_base::sync_with_stdio(false); cin.tie(0); int n,T;cin>>T; while(T--){ x=0; cin>>n; memset(v,0,sizeof v); int cnt=0; for(int i=1;i<=n;i++){ cin>>ll[i]>>rr[i]; ttp[++cnt]=ll[i]; ttp[++cnt]=rr[i]; } sort(ttp+1,ttp+1+cnt); cnt=unique(ttp+1,ttp+1+cnt)-ttp; int t=cnt; for(int i=1;i<t;i++) { if(ttp[i]+1!=ttp[i+1])ttp[++cnt]=ttp[i]+1; } sort(ttp+1,ttp+1+cnt); built(1,1,cnt); for(int i=1;i<=n;i++){ x=i; ql=lower_bound(ttp+1,ttp+1+cnt,ll[i])-ttp; qr=lower_bound(ttp+1,ttp+1+cnt,rr[i])-ttp; Modify(1,1,cnt); } cout<<query(1,1,cnt)<<endl; } return 0; }
原文地址:http://blog.csdn.net/acvcla/article/details/39780883