zoukankan      html  css  js  c++  java
  • BZOJ3262: 陌上花开

    众所周知三维偏序可以树套树或者分治

    然后我就写了二维离散化+二维树状数组

    然而并没有分治快……

    #include<algorithm>
    #include<cstdio>
    #define F lower_bound
    #define G upper_bound
    using namespace std;
    const int N=1e5+5;
    struct buf{
    	operator int(){
    		int x;scanf("%d",&x);
    		return x;
    	}
    }it;
    struct vec{int i,j,k;}s[N];
    bool operator<(vec a,vec b){
    	return a.i^b.i?a.i<b.i:a.j^b.j?a.j<b.j:a.k<b.k;
    }
    bool operator!=(vec a,vec b){
    	return a<b||b<a;
    }
    int e[N*40],*q=e;
    struct node{
    	int sum(int i){
    		int j=0;
    		for(i=G(u,u+s,i)-u;i;i^=i&-i)
    			j+=v[i-1];
    		return j;
    	}
    	void add(int i){
    		for(i=G(u,u+s,i)-u;i<=s;i+=i&-i)
    			++v[i-1];
    	}
    	int s,*u,*v;
    	void alloc(){
    		u=q,q+=s,v=q,q+=s,s=0;
    	}
    	void ins(int i){
    		u[s++]=i;
    	}
    	void ins(node& a){
    		for(int i=0;i!=a.s;++i)
    			u[s++]=a.u[i];
    	}
    	void init(){
    		sort(u,u+s);
    		s=unique(u,u+s)-u;
    	}
    }t[N];
    int n,m,l[N],v[N];
    int main(){
    	n=it,~it;
    	for(int i=0;i!=n;++i){
    		s[i].i=it;
    		s[i].j=l[i]=it;
    		s[i].k=it;
    	}
    	sort(l,l+n);
    	m=unique(l,l+n)-l;
    	sort(s,s+n);
    	for(int i=0;i!=n;++i)
    		++t[s[i].j=F(l,l+m,s[i].j)-l+1].s;
    	for(int i=1;i<=m;++i){
    		if(i+(i&-i)<=m)
    			t[i+(i&-i)].s+=t[i].s;
    		t[i].alloc();
    	}
    	for(int i=0;i!=n;++i)
    		t[s[i].j].ins(s[i].k);
    	for(int i=1;i<=m;++i){
    		t[i].init();
    		if(i+(i&-i)<=m)
    			t[i+(i&-i)].ins(t[i]);
    	}
    	for(int i=0,j=-1;i!=n;++i){
    		if(s[i+1]!=s[i]){
    			int* u=v;
    			for(int k=s[i].j;k;k^=k&-k)
    				u+=t[k].sum(s[i].k);
    			*u+=i-j,j=i;
    		}
    		for(int k=s[i].j;k<=m;k+=k&-k)
    			t[k].add(s[i].k);
    	}
    	for(int i=0;i!=n;++i)
    		printf("%d
    ",v[i]);
    }
    
  • 相关阅读:
    SpringBoot list查询方法
    eclipse创建web项目
    loadrunner获取返回值为乱码
    连接数据库
    lr并发量和迭代的区别
    LoadRunner11.00入门教程出现的问题
    python学习杂记--函数参数的设置
    adb logcat的命令行开启和关闭
    python学习杂记--pycharm控制台输出乱码
    python学习杂记--装饰器
  • 原文地址:https://www.cnblogs.com/f321dd/p/5803582.html
Copyright © 2011-2022 走看看