| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
能告诉我我怎么过了的么#include<stdio.h>
#include<algorithm>
#include<queue>
#include<stack>
#include<vector>
#include<set>
#include<string>
#include<string.h>
#define max(a,b) a>b?a:b
#define min(a,b) a<b?a:b
#define nn 10005
#define INF 0x7FFFFFFF
typedef long long LL;
using namespace std;
int map[nn<<1][2];
bool flag[nn<<1];
struct TREE
{
int l,r,col;
}tree[nn<<2];
struct SSS
{
int id,pos;
}s[nn<<2];
void Build(LL L,LL R,LL root)
{
tree[root].l=L;
tree[root].r=R;
tree[root].col=0;
if(L<R)
{
LL M=(L+R)/2;
Build(L,M,root<<1);
Build(M+1,R,(root<<1)|1);
}
}
void PushDown(int root)
{
if(tree[root].col)
{
tree[root<<1].col=tree[(root<<1)|1].col=tree[root].col;
tree[root].col=0;
}
}
void UpDate(int a,int b,int root,int x)
{
if(a<=tree[root].l&&tree[root].r<=b)
tree[root].col=x;
else
{
PushDown(root);
int M=(tree[root].l+tree[root].r)/2;
if(a<=M)
UpDate(a,b,root<<1,x);
if(b>M)
UpDate(a,b,(root<<1)|1,x);
}
}
int Query(int root)
{
int res=0;
if(tree[root].col)
{
if(!flag[tree[root].col])
{
res++;
flag[tree[root].col]=1;
}
return res;
}
return Query(root<<1)+Query((root<<1)|1);
}
int cmp(SSS a,SSS b)
{
return a.pos<b.pos;
}
int main()
{
int n,t;
while(scanf("%d",&t)!=EOF)
{
while(t--)
{
int i;
memset(flag,0,sizeof(flag));
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d%d",&map[i][0],&map[i][1]);
s[i<<1].pos=map[i][0];
s[(i<<1)|1].pos=map[i][1];
s[i<<1].id=-(i+1);
s[(i<<1)|1].id=i+1;
}
sort(s,s+2*n,cmp);
int t=s[0].pos,cnt=1;
for(i=0;i<2*n;i++)
{
if(t!=s[i].pos)
{
t=s[i].pos;
cnt++;
}
if(s[i].id<0)
map[-s[i].id-1][0]=cnt;
else
map[s[i].id-1][1]=cnt;
}
Build(1,cnt,1);
for(i=0;i<n;i++)
UpDate(map[i][0],map[i][1],1,i+1);
printf("%d\n",Query(1));
}
}
return 0;
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator