#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: 简单题的更多相关文章

  1. bzoj 4066: 简单题 kd-tree

    4066: 简单题 Time Limit: 50 Sec  Memory Limit: 20 MBSubmit: 234  Solved: 82[Submit][Status][Discuss] De ...

  2. BZOJ 4066 简单题(KD树)

    [题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=4066 [题目大意] 要求维护矩阵内格子加点和矩阵查询 [题解] 往KD树上加权值点,支 ...

  3. bzoj 4066 简单题——KDtree(带重构)

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4066 带部分重构的KDtree.就是那个替罪羊树思想的. 写了对拍,调了半天,发现忘了 re ...

  4. bzoj 4066: 简单题 K-D树

    题目大意: http://www.lydsy.com/JudgeOnline/problem.php?id=4066 题解 我们把每次的修改操作都当作二维平面上多了一个权值点 对于每组询问可以看做求一 ...

  5. BZOJ 4066 简单题 ——KD-Tree套替罪羊树

    [题目分析] 直接x,y二维轮番划分,暴力即可. 套上替罪羊,打碎重构,对于时间复杂度有了保证. 写起来好麻烦,重构的技巧很棒! [代码] #include <cstdio> #inclu ...

  6. BZOJ 2683: 简单题

    2683: 简单题 Time Limit: 50 Sec  Memory Limit: 128 MBSubmit: 913  Solved: 379[Submit][Status][Discuss] ...

  7. BZOJ 3687: 简单题 bitset

    3687: 简单题 Time Limit: 10 Sec  Memory Limit: 512 MB[Submit][Status][Discuss] Description 小呆开始研究集合论了,他 ...

  8. bzoj 4066 & bzoj 2683 简单题 —— K-D树(含重构)

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4066 https://www.lydsy.com/JudgeOnline/problem.p ...

  9. BZOJ 2683: 简单题(CDQ分治 + 树状数组)

    BZOJ2683: 简单题(CDQ分治 + 树状数组) 题意: 你有一个\(N*N\)的棋盘,每个格子内有一个整数,初始时的时候全部为\(0\),现在需要维护两种操作: 命令 参数限制 内容 \(1\ ...

随机推荐

  1. RStudio中,出现中文乱码问题的解决方案

    RStudio中,出现中文乱码问题的解决方案解决步骤:1.设置RStudio文本显示的默认编码:RStudio菜单栏的Tools -> Global Options2.选择General -&g ...

  2. sql-按周输出每月的周日期范围

    --日期参数,此处可以建立存储过程,接收月份,计算月开始结束时间或者直接接受开始与结束时间 declare @begDate datetime = '2014-06-01' declare @endD ...

  3. 微信touchmove不生效

    最近在写一个微信里面滑动切换图片的功能,发现在chrome下都正常显示,可是在微信和qq浏览器里面就是不行. 经过一番排查,发现了问题: touchmove只触发了一次. 解决方案: 在touchst ...

  4. EL表达式语言总结

    EL介绍 Expressive Language, JSP2.0引入,简化jsp开发中对对象的引用. 基本语法 ${表达式} 常见用法 根据其访问对象,可大体分成三类:访问数据及其各种表达式,访问EL ...

  5. lucene 分词实现

    一.概念认识 1.常用的Analyer SimpleAnalyzer.StopAnalyzer.WhitespaceAnalyzer.StandardAnalyzer 2.TokenStream 分词 ...

  6. 发布一个开源极致的javascript模板引擎tpl.js

    tpl.js(大家直接去https://git.oschina.net/tianqiq/tpl.js这个上面看) 简介 tpl.js是一个比较极致(极小,极快,极简单)的js模板引擎,可以在各种js环 ...

  7. CSS选择器详解

    选择器是CSS的核心,从最初的元素.class/id选择器,演进到伪元素.伪类,以及CSS3中提供的更丰富的选择器,定位页面上的任意元素开始变得愈发的简单. 1.元素选择器 这是最基本的CSS选择器, ...

  8. Android TabHost使用

    TabHost是Android中自带的选项卡控件,效果图如下: 主布局文件 <RelativeLayout xmlns:android="http://schemas.android. ...

  9. SQLiteDatabase 基本操作

    一.SQLiteOpenHelper类 android 提供类SQLiteOpenHelper帮助用户简化对SQLite数据库的操作.该类是一个抽象类,必须用户自己实现并重写oncreate()和on ...

  10. [阅读笔记]Software optimization resources

    http://www.agner.org/optimize/#manuals 阅读笔记Optimizing software in C++   7. The efficiency of differe ...