BZOJ2683: 简单题
来源:互联网 发布:摩天手无线鼠标 知乎 编辑:程序博客网 时间:2024/06/05 20:21
BZOJ2683传送门
BZOJ1176几乎一样啊
戳这里–>BZOJ1176
然后这个题 应 该? 要开long long 吧。
(日常打错变量名QAQ。。)
【代码】
#include <cstdio>#include <iostream>#include <algorithm>#include <cstring>#include <queue>#include <cmath>#define N 200005#define M 800005#define INF 1<<29using 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,tot,numa;ll ans[N],szsz[500005];class Query{ public: int type,x,y,w,id; Query(){} Query(int tt,int xx,int yy,int ww,int ii){ type=tt,x=xx,y=yy,w=ww,id=ii; }}Q[M],tmp[M];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,int y){ for(int i=x;i<=n;i+=lowbit(i)) szsz[i]+=y;}ll query(int x){ ll rtn=0; for(int i=x;i;i-=lowbit(i)) rtn+=szsz[i]; return rtn;}void Clear(int x){ for(int i=x;i<=n&&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&1) Sum_Up(Q[p].y,Q[p].w); tmp[o++]=Q[p++]; } else { if(Q[q].type==2) 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==2) ans[Q[q].id]+=query(Q[q].y)*Q[q].w; tmp[o++]=Q[q++]; } for(int i=0;i<o;i++) Clear(tmp[i].y),Q[i+l]=tmp[i];}int main(){ n=read(); while(1) { static int tp,x,y,xx,yy; tp=read();if(tp==3) break; x=read(),y=read(),xx=read(); if(tp&1) Q[++tot]=Query(tp,x,y,xx,0); else { yy=read();numa++; Q[++tot]=Query(tp,x-1,y-1,1,numa);Q[++tot]=Query(tp,x-1,yy,-1,numa); Q[++tot]=Query(tp,xx,y-1,-1,numa);Q[++tot]=Query(tp,xx,yy,1,numa); } } CDQ(1,tot); for(int i=1;i<=numa;i++) printf("%lld\n",ans[i]); return 0;}
阅读全文
0 0
- 【BZOJ2683】简单题
- bzoj2683: 简单题
- bzoj2683简单题
- bzoj2683 简单题
- BZOJ2683: 简单题
- BZOJ2683: 简单题 kdtree
- BZOJ2683简单题
- bzoj2683 简单题
- BZOJ2683: 简单题
- bzoj2683 简单题
- [BZOJ2683]=[BZOJ4066]简单题
- 【BZOJ2683】简单题【CDQ分治】
- BZOJ2683 简单题 题解&代码
- BZOJ2683 简单题 [KD-tree]
- [BZOJ1176] [Balkan2007]Mokia/[BZOJ2683] 简单题
- BZOJ2683 简单题(CDQ分治)
- [BZOJ2683]简单题(cdq分治)
- 【bzoj2683】简单题 CDQ分治+树状数组
- HTML标签
- html 中 id class type name value 简要理解
- 1
- 报错java.lang.UnsatisfiedLinkError: dlopen failed: "/data/app/cn.*****/lib/arm64/libGlobal.so" is 3
- AndroidStudio/gradle 配置打包输出文件名/输出版本号渠道
- BZOJ2683: 简单题
- Object和Objects的区别
- Centos window界面与命令行
- mysql在linux下的安装
- Netty心跳和重连
- 开发中遇到的坑
- Java简史
- java注解详解
- 功能强大的C语言memset()函数用法