bzoj 4066: 简单题
#include<cstdio>
#include<iostream>
#include<cstdlib>
#include<algorithm>
#define M 200009
#define inf 100000000
#define ll long long
using namespace std;
struct A
{
int l,r,mn[],mx[],d[],v;
ll sum;
}a[M],b,p[M];
int n,m,root,N,tot;
ll lans;
void updata(int k)
{
A l1=a[a[k].l],r1=a[a[k].r];
for(int i=;i<;i++)
{
a[k].mn[i]=a[k].mx[i]=a[k].d[i];
if(a[k].l)
a[k].mn[i]=min(a[k].mn[i],l1.mn[i]),a[k].mx[i]=max(a[k].mx[i],l1.mx[i]);
if(a[k].r)
a[k].mn[i]=min(a[k].mn[i],r1.mn[i]),a[k].mx[i]=max(a[k].mx[i],r1.mx[i]);
}
a[k].sum=l1.sum+r1.sum+(ll)a[k].v;
return;
}
bool cmp(A a1,A a2)
{
return a1.d[N]<a2.d[N];
}
int rebuild(int l1,int r1,int now)
{
N=now;
int mid=(l1+r1)>>;
nth_element(p+l1,p+mid,p+r1+,cmp);
a[mid]=p[mid];
if(l1<mid)
a[mid].l=rebuild(l1,mid-,now^);
else
a[mid].l=;
if(r1>mid)
a[mid].r=rebuild(mid+,r1,now^);
else
a[mid].r=;
updata(mid);
return mid;
}
void cha(int &k,A b,int now)
{
if(!k)
{
k=++m;
for(int i=;i<;i++)
a[k].mn[i]=a[k].mx[i]=a[k].d[i]=b.d[i];
a[k].l=a[k].r=;
}
if(a[k].d[]==b.d[]&&a[k].d[]==b.d[])
{
a[k].v+=b.v;
a[k].sum+=b.v;
return;
}
if(a[k].d[now]>b.d[now])
cha(a[k].l,b,now^);
else
cha(a[k].r,b,now^);
updata(k);
}
ll zhao(int k,int x1,int y1,int x2,int y2)
{
if(a[k].mn[]>=x1&&a[k].mn[]>=y1&&a[k].mx[]<=x2&&a[k].mx[]<=y2)
return a[k].sum;
if(a[k].mn[]>x2||a[k].mn[]>y2||a[k].mx[]<x1||a[k].mx[]<y1)
return ;
ll tmp=;
if(a[k].d[]>=x1&&a[k].d[]>=y1&&a[k].d[]<=x2&&a[k].d[]<=y2)
tmp+=a[k].v;
return tmp+zhao(a[k].l,x1,y1,x2,y2)+zhao(a[k].r,x1,y1,x2,y2);
} ll read()
{
ll x=,f=;char ch=getchar();
while(ch<''||ch>''){if(ch=='-')f=-;ch=getchar();}
while(ch>=''&&ch<=''){x=x*+ch-'';ch=getchar();}
return x*f;
}
int main()
{
n=read();
tot=;
for(;;)
{
int a1,a2,a3,a4;
a1=read();
if(a1==)
return ;
a2=read()^lans;
a3=read()^lans;
a4=read()^lans;
if(a1==)
{
b.d[]=a2;
b.d[]=a3;
b.v=a4;
cha(root,b,);
if(m==tot)
{
for(int i=;i<=m;i++)
p[i]=a[i];
root=rebuild(,m,);
tot+=;
}
}
else
{
int a5;
a5=read()^lans;
printf("%lld\n",lans=zhao(root,a2,a3,a4,a5));
}
}
return ;
}
KDtree
bzoj 4066: 简单题的更多相关文章
- bzoj 4066: 简单题 kd-tree
4066: 简单题 Time Limit: 50 Sec Memory Limit: 20 MBSubmit: 234 Solved: 82[Submit][Status][Discuss] De ...
- BZOJ 4066 简单题(KD树)
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=4066 [题目大意] 要求维护矩阵内格子加点和矩阵查询 [题解] 往KD树上加权值点,支 ...
- bzoj 4066 简单题——KDtree(带重构)
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4066 带部分重构的KDtree.就是那个替罪羊树思想的. 写了对拍,调了半天,发现忘了 re ...
- bzoj 4066: 简单题 K-D树
题目大意: http://www.lydsy.com/JudgeOnline/problem.php?id=4066 题解 我们把每次的修改操作都当作二维平面上多了一个权值点 对于每组询问可以看做求一 ...
- BZOJ 4066 简单题 ——KD-Tree套替罪羊树
[题目分析] 直接x,y二维轮番划分,暴力即可. 套上替罪羊,打碎重构,对于时间复杂度有了保证. 写起来好麻烦,重构的技巧很棒! [代码] #include <cstdio> #inclu ...
- BZOJ 2683: 简单题
2683: 简单题 Time Limit: 50 Sec Memory Limit: 128 MBSubmit: 913 Solved: 379[Submit][Status][Discuss] ...
- BZOJ 3687: 简单题 bitset
3687: 简单题 Time Limit: 10 Sec Memory Limit: 512 MB[Submit][Status][Discuss] Description 小呆开始研究集合论了,他 ...
- bzoj 4066 & bzoj 2683 简单题 —— K-D树(含重构)
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4066 https://www.lydsy.com/JudgeOnline/problem.p ...
- BZOJ 2683: 简单题(CDQ分治 + 树状数组)
BZOJ2683: 简单题(CDQ分治 + 树状数组) 题意: 你有一个\(N*N\)的棋盘,每个格子内有一个整数,初始时的时候全部为\(0\),现在需要维护两种操作: 命令 参数限制 内容 \(1\ ...
随机推荐
- git中忽略UserInterfaceState.xcuserstate的方法
在commit 时候一直会提示userinterfacestate.xcuserstate文件尚未commit. 你可以用命令行 git rm --cached [YourProjectName].x ...
- 自学 web 前端人怎么找工作?
1,你做过的项目可以体现你的价值.2,你的个人博客可以反映你的思考.3,你的GitHub页面可以展示你的项目.4,你项目中的代码可以看出你编程的风格.1,2,3,4之间有交集.当你能证明,你能创造的价 ...
- U盘修复
方法一: 1.点开始-运行-输入cmd-format f: /fs: FAT32 (这里f:是指U盘所在盘符) 2.打开控制面板-管理工具-计算机管理-磁盘管理-找到U盘的所在的盘符--点右键--删除 ...
- 解决IIS上无法添加.NET用户的问题
最近开发了一个简单的管理后台,后台用户管理都用的是AspNetSqlMembershipProvider这一套框架,添加和删除用户的功能在开发阶段通过ASP.NET网站管理工具完成. 部署到服务器上时 ...
- Jenkins+ANT+SVN快速搭建持续集成环境
伟大的语言都从helloworld开始,这里我们用Jenkins+ANT+SVN来搭建这一套持续集成环境. 环境准备: 一台已经配置好Jenkins和Ant的机器. 项目准备: 用Ecplise建立一 ...
- CSRF token 无法被验证. ----Yii连接数据库后数据库错误日志报错
CSRF token 无法被验证. 我使用的是mongodb+ yii1.1 What is CSRF, please see the details here. http://en.wikiped ...
- css3 文字过长用...代替
white-space: nowrap; text-overflow: ellipsis; overflow: hidden; white-space:nowrap 代表多个空格/回车不换行: tex ...
- 【java基础】面向对象的三大基本特征之-------继承
面向对象的三大特征:封装,继承,多态 java通过extends关键字来实现继承,而且是单继承,一个子类只可以有一个直接父类,但是父类还可以有父类... java.long.Object是所有类的父类 ...
- arm指令周期
1.大部分算术运算和逻辑运算指令都是单周期的,例如加法.减法.位级运算和移位 2.乘法指令根据操作数位数的不同,从2-5个周期都有可能. 3.无条件跳转语句和跳转语句成功跳转,需要重新填充流水线,因此 ...
- tomcat映射路径的配置方法
一.默认配置 位置:/conf 文件夹里的server.xml文件 <Host appBase="webapps"> appBase:可以指定绝对目录,也可以指定相对于 ...