BZOJ1935: [Shoi2007]Tree 园丁的烦恼
来源:互联网 发布:sql查询重复数据数量 编辑:程序博客网 时间:2024/05/21 08:23
BZOJ1935传送门
戳这里–>BZOJ1176
【代码】
#include <cstdio>#include <iostream>#include <algorithm>#define N 500005#define M 10000005using namespace std;typedef long long ll;int read(){ int x=0,f=1;char ch=getchar(); while(!isdigit(ch)){if(ch=='-') f=-1;ch=getchar();} while(isdigit(ch)){x=(x<<1)+(x<<3)+ch-'0';ch=getchar();} return x*f;}int n,m,tot,numa,maxy;int szsz[M],ans[N];class Query{ public: int type,x,y,w,id; Query(){} Query(int tt,int xx,int yy,int zz,int ii){ type=tt,x=xx,y=yy,w=zz,id=ii; }}Q[2500005],tmp[2500005]; bool operator <(Query a,Query b){ return a.x<b.x||(a.x==b.x&&a.type<b.type);}int lowbit(int x){return x&-x;}void Sum_Up(int x){ for(int i=x;i<=maxy;i+=lowbit(i)) szsz[i]++;}int query(int x){ int rtn=0; for(int i=x;i;i-=lowbit(i)) rtn+=szsz[i]; return rtn;}void Clear(int x){ for(int i=x;i<=maxy&&szsz[i];i+=lowbit(i)) szsz[i]=0;}void CDQ(int L,int R){ if(L==R) return; int mid=L+R>>1;CDQ(L,mid);CDQ(mid+1,R); int p=L,q=mid+1,o=0; while(p<=mid&&q<=R) { if(Q[p]<Q[q]) { if(!Q[p].type) Sum_Up(Q[p].y); tmp[o++]=Q[p++]; } else { if(Q[q].type) ans[Q[q].id]+=query(Q[q].y)*Q[q].w; tmp[o++]=Q[q++]; } } while(p<=mid) tmp[o++]=Q[p++]; while(q<=R) { if(Q[q].type) ans[Q[q].id]+=query(Q[q].y)*Q[q].w; tmp[o++]=Q[q++]; } for(int i=0;i<o;i++) Q[i+L]=tmp[i],Clear(tmp[i].y);}int main(){ n=read(),m=read(); for(int i=1;i<=n;i++) { static int x,y;x=read()+1,y=read()+1; Q[++tot]=Query(0,x,y,0,0);maxy=max(maxy,y); } for(int i=1;i<=m;i++) { static int xx,yy,x,y; x=read()+1,y=read()+1,xx=read()+1,yy=read()+1;maxy=max(maxy,yy); Q[++tot]=Query(1,x-1,y-1,1,i);Q[++tot]=Query(1,x-1,yy,-1,i); Q[++tot]=Query(1,xx,y-1,-1,i);Q[++tot]=Query(1,xx,yy,1,i); } CDQ(1,tot); for(int i=1;i<=m;i++) printf("%d\n",ans[i]); return 0;}
阅读全文
0 0
- BZOJ1935: [Shoi2007]Tree 园丁的烦恼
- 【bzoj1935】[Shoi2007]Tree 园丁的烦恼
- bzoj1935: [Shoi2007]Tree 园丁的烦恼
- [bzoj1935][Shoi2007]Tree 园丁的烦恼 树状数组
- [BZOJ1935][SHOI2007]Tree 园丁的烦恼(离线+动态维护树状数组)
- 1935: [Shoi2007]Tree 园丁的烦恼
- bzoj 1935: [Shoi2007]Tree 园丁的烦恼
- bzoj 1935: [Shoi2007]Tree 园丁的烦恼
- BZOJ 1935 [Shoi2007]Tree 园丁的烦恼
- BZOJ 1935: [Shoi2007]Tree 园丁的烦恼
- 洛谷 P2163 [SHOI2007]Tree 园丁的烦恼
- BZOJ 1935: [Shoi2007]Tree 园丁的烦恼
- bzoj 1935: [Shoi2007]Tree 园丁的烦恼 离线+树状数组
- 【Shoi2007】bzoj 1935 园丁的烦恼
- bzoj1935.园丁的烦恼 (离散化 && 树状数组)
- 4822: [Cqoi2017]老C的任务&&1935: [Shoi2007]Tree 园丁的烦恼
- 4822: [Cqoi2017]老C的任务&&bzoj 1935: [Shoi2007]Tree 园丁的烦恼
- 【BZOJ】【P1935】【Shoi2007】【Tree 园丁的烦恼】【题解】【树状数组+离散化】
- Uva 580 排列组合
- CentOS 7 中 hostnamectl 的使用
- 基于Maven的SpringBoot项目实现热部署的两种方式
- 定点加法技术
- AVL树 四种旋转的场景
- BZOJ1935: [Shoi2007]Tree 园丁的烦恼
- 由进程名和该进程的虚拟地址获取虚拟地址的数据
- 入门题
- 自定义toast
- 数据库问题整理
- 安卓NFC标签读取快速开发教程(附源代码demo下载)
- 蓝桥杯--算法练习:安慰奶牛(kruskal最小生成树)
- 实时DXT压缩
- epoll学习