http://www.elijahqi.win/archives/3722
Description
神犇Aleph在SDOI Round2前立了一个flag:如果进了省队,就现场直播喝崂山白花蛇草水。凭借着神犇Aleph的实
力,他轻松地进了山东省省队,现在便是他履行诺言的时候了。蒟蒻Bob特地为他准备了999,999,999,999,999,999
瓶崂山白花蛇草水,想要灌神犇Aleph。神犇Aleph求(跪着的)蒟蒻Bob不要灌他,由于神犇Aleph是神犇,蒟蒻Bo
b最终答应了他的请求,但蒟蒻Bob决定将计就计,也让神犇Aleph回答一些问题。具体说来,蒟蒻Bob会在一个宽敞
的广场上放置一些崂山白花蛇草水(可视为二维平面上的一些整点),然后询问神犇Aleph在矩形区域(x1, y1), (
x2, y2)(x1≤x2且y1≤y2,包括边界)中,崂山白花蛇草水瓶数第k多的是多少。为了避免麻烦,蒟蒻Bob不会在同
一个位置放置两次或两次以上的崂山白花蛇草水,但蒟蒻Bob想为难一下神犇Aleph,希望他能在每次询问时立刻回
答出答案。神犇Aleph不屑于做这种问题,所以把这个问题交给了你。
Input
输入的第一行为两个正整数N, Q,表示横纵坐标的范围和蒟蒻Bob的操作次数(包括放置次数和询问次数)。
接下来Q行,每行代表蒟蒻Bob的一个操作,操作格式如下:
首先第一个数字type,表示操作种类。type=1表示放置,type=2表示询问。
若type=1,接下来会有三个正整数x, y, v,表示在坐标整点(x, y)放置v瓶崂山白花蛇草水。(1≤x, y≤N, 1≤v≤10^9)
若type=2,接下来会有五个正整数x1, y1, x2, y2, k,表示询问矩形区域(x1, y1), (x2, y2)中,崂山白花蛇草水瓶数第k多的是多少。
(1≤x1≤x2≤N,1≤y1≤y2≤N,1≤k≤Q)
为了体现程序的在线性,你需要将每次读入的数据(除了type值)都异或lastans,其中lastans表示上次询问的答
案。如果上次询问的答案为”NAIVE!ORZzyz.”(见样例输出),则将lastans置为0。初始时的lastans为0。
初始时平面上不存在崂山白花蛇草水。
本题共有12组测试数据。对于所有的数据,N≤500,000。
Q的范围见下表:
测试点1-2 Q=1,000
测试点3-7 Q=50,000
测试点8-12 Q=100,000

Output
对于每个询问(type=2的操作),回答崂山白花蛇草水瓶数第k多的是多少。若不存在第k多的瓶数,
请输出”NAIVE!ORZzyz.”(输出不含双引号)。
Sample Input
10 7
1 1 1 1
1 2 2 3
1 4 1 2
1 3 4 4
2 1 1 4 1 3
2 2 2 3 5 4
2 2 1 4 4 2
Sample Output
NAIVE!ORZzyz.
NAIVE!ORZzyz.
3
HINT

Source
Idea By Aleph, Description & Data cases By jinlifu1999.

https://blog.csdn.net/elijahqi/article/details/80702842 同理

#include<cstdio>
#include<cctype>
#include<algorithm>
using namespace std;
inline char gc(){static char now[1<<16],*S,*T;if (T==S){T=(S=now)+fread(now,1,1<<16,stdin);if(T==S) return EOF;}return *S++;
}
inline int read(){int x=0,f=1;char ch=gc();while(!isdigit(ch)) {if (ch=='-') f=-1;ch=gc();}while(isdigit(ch)) x=x*10+ch-'0',ch=gc();return x*f;
}
const int inf=0x3f3f3f3f;
struct node{int d[2];int& operator [](int x){return d[x];}
}P;
const int N=110000;
int root,D,n,Q,x1,y1,x2,y2,q[N],top,num,cnt,rt[N*30];
struct node1{node x;int mn[2],mx[2],left,right,size;
}tree[N*30];
struct node2{int left,right;
}tr[N*30];
inline void update(int x){int l=tree[x].left,r=tree[x].right;for (int i=0;i<2;++i) tree[x].mn[i]=min(tree[x].x[i],min(tree[l].mn[i],tree[r].mn[i]));for (int i=0;i<2;++i) tree[x].mx[i]=max(tree[x].x[i],max(tree[l].mx[i],tree[r].mx[i]));tree[x].size=tree[l].size+tree[r].size+1;
}
inline void dfs(int x){if(!x) return;q[++top]=x;dfs(tree[x].left);dfs(tree[x].right);
}
inline bool cmp(const int &a,const int &b){return tree[a].x[D]<tree[b].x[D];
}
inline void build(int &x,int l,int r,int d){int mid=l+r>>1;D=d;nth_element(q+l,q+mid,q+r+1,cmp);x=q[mid];for (int i=0;i<2;++i) tree[x].mn[i]=tree[x].mx[i]=tree[x].x[i];tree[x].left=tree[x].right=0;tree[x].size=1;if (l<mid) build(tree[x].left,l,mid-1,d^1);if (r>mid) build(tree[x].right,mid+1,r,d^1);update(x);
}
inline void rebuild(int &x,int d){top=0;dfs(x);build(x,1,top,d);
}
inline void insert1(int &x,int d,bool flag){if (!x) {x=++cnt;tree[x].x=P;update(x);return;}int l=tree[x].left,r=tree[x].right;bool tag=0;if (P[d]<tree[x].x[d]) {if ((tree[l].size+1)*4>(tree[x].size+1)*3) insert1(tree[x].left,d^1,1),tag=1;else insert1(tree[x].left,d^1,flag);}else{if ((tree[r].size+1)*4>(tree[x].size+1)*3) insert1(tree[x].right,d^1,1),tag=1;else insert1(tree[x].right,d^1,flag);}update(x);if (tag&&!flag) rebuild(x,d);
}
inline int query(int x){if (!x) return 0;if (x1<=tree[x].mn[0]&&y1<=tree[x].mn[1]&&x2>=tree[x].mx[0]&&y2>=tree[x].mx[1]) return tree[x].size;if (tree[x].mx[0]<x1||tree[x].mx[1]<y1||tree[x].mn[0]>x2||tree[x].mn[1]>y2) return 0;int tmp=(tree[x].x[0]<=x2&&tree[x].x[0]>=x1&&tree[x].x[1]<=y2&&tree[x].x[1]>=y1);tmp+=query(tree[x].left)+query(tree[x].right);return tmp;
}
inline void ins(int &x,int l,int r,int p){if (!x) x=++num;insert1(rt[x],0,0);if (l==r) return;int mid=l+r>>1;if (p<=mid) ins(tr[x].left,l,mid,p);else ins(tr[x].right,mid+1,r,p);
}
inline int qr(int x,int l,int r,int k){if (l==r) return l;int mid=l+r>>1;int tmp=query(rt[tr[x].right]);if(k<=tmp) return qr(tr[x].right,mid+1,r,k);else return qr(tr[x].left,l,mid,k-tmp);
}
int main(){freopen("bzoj4605.in","r",stdin);n=read();Q=read();tree[0].mn[0]=tree[0].mn[1]=inf;tree[0].mx[0]=tree[0].mx[1]=0;int last_ans=0;while(Q--){int op=read();if (op==1){int x=read()^last_ans,y=read()^last_ans,v=read()^last_ans;P[0]=x;P[1]=y;ins(root,1,1000000000,v);}else{x1=read()^last_ans,y1=read()^last_ans,x2=read()^last_ans,y2=read()^last_ans;int k=read()^last_ans;if (query(rt[1])<k) {puts("NAIVE!ORZzyz.");last_ans=0;continue;}printf("%d\n",last_ans=qr(root,1,1000000000,k));}}return 0;
}

bzoj 4605 崂山白花蛇草水相关推荐

  1. [BZOJ]4605 崂山白花蛇草水 线段树套KD-Tree

    4605: 崂山白花蛇草水 Time Limit: 80 Sec  Memory Limit: 512 MB Submit: 527  Solved: 153 [Submit][Status][Dis ...

  2. BZOJ 4605: 崂山白花蛇草水 树套树 权值线段树套kdtree

    4605: 崂山白花蛇草水 Time Limit: 80 Sec  Memory Limit: 512 MB Submit: 527  Solved: 153 [Submit][Status][Dis ...

  3. BZOJ 4605 崂山白花蛇草水 权值线段树+K-D树

    Description 神犇Aleph在SDOI Round2前立了一个flag:如果进了省队,就现场直播喝崂山白花蛇草水.凭借着神犇Aleph的实 力,他轻松地进了山东省省队,现在便是他履行诺言的时 ...

  4. BZOJ 4605 崂山白花蛇草水(权值线段树+KD树)

    [题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=4605 [题目大意] 操作 1 x y k 表示在点(x,y)上放置k个物品, 操作 2 ...

  5. [bzoj4605]崂山白花蛇草水 k-d tree 带替罪羊重构

    4605: 崂山白花蛇草水 Time Limit: 80 Sec  Memory Limit: 512 MB [Submit][Status][Discuss] Description 神犇Aleph ...

  6. BZOJ4605:崂山白花蛇草水

    浅谈\(K-D\) \(Tree\):https://www.cnblogs.com/AKMer/p/10387266.html 题目传送门:https://lydsy.com/JudgeOnline ...

  7. bzoj4605: 崂山白花蛇草水 权值线段树套KDtree

    bzoj4605: 崂山白花蛇草水 链接 bzoj loj 思路 强制在线,那就权值线段树套KDtree好了,没啥好讲的. KDtree要加平衡因子来重构.另外,那水真难喝. 错误 树套树一边写过了, ...

  8. 崂山白花蛇草水:旧款变爆款老字号“有预谋”

    当崂山矿泉水官方微博发文称,崂山矿泉水响应国家一带一路的号召进驻利比里亚了,两张配图却让网友大惊失色:这不就是传说中的中国最难喝的饮料--崂山白花蛇草水?紧接着,"最难喝饮料Top5&quo ...

  9. 崂山白花蛇草水 权值线段树套KDtree

    崂山白花蛇草水 权值线段树套KDtree Description 神犇Aleph在SDOI Round2前立了一个flag:如果进了省队,就现场直播喝崂山白花蛇草水.凭借着神犇Aleph的实 力,他轻 ...

最新文章

  1. Zookeeper 服务注册与发现02——服务消费者
  2. spring事务传播属性与隔离级别
  3. C语言进制转换时自动扩展位?(原码、反码、补码)(打印%o、%x时会自动扩展到32位【负数先得到其十进制真实数值,再根据其真实数值得到八进制、十进制补码】)
  4. 利用nf_conntrack机制存储路由,省去每包路由查找
  5. 部署Office Web Apps Server并配置其与SharePoint 2013的集成
  6. Spring Security源码解析(二)——引入
  7. python sorted下标_Python学习教程(Python学习路线):第七天-字符串和常用数据结构
  8. PyQt5笔记(06) -- 菜单
  9. 腾讯入股合作金融云,花费4亿元获长亮科技7.14%股份
  10. 阿里云:从“亚洲巨象”到“全球航母”
  11. 用字符数组作函数参数编程实现如下功能:在字符串中删除与某字符相同的字符。
  12. 个人安装RHEL7需要做的事情
  13. php artisan migrate,关于laravel 5.1下php artisan migrate的使用
  14. Unity3D相机操控(完整模拟Scene视图操作)
  15. 《土地公婆》钟久夫邓天晴演绎梁祝爱情
  16. 公文签收系统html模板,公文签收系统完美增强司法版asp源码
  17. C++源程序语法检查器
  18. cemu未能连接到服务器,WiiU模拟器CEMU可连任天堂官方服务器对战
  19. 在线翻译软件:我为什么选择了memoQ?
  20. 175、交换机的基本配置

热门文章

  1. MAC使用Bootcamp安装win7
  2. 强大的文字处理器——Nisus Writer Pro
  3. 30岁的程序员......
  4. css立体3d效果动画,css3 实现动画,变换基点及3D效果~
  5. c语言画笔的使用方法,新手必看:Photoshop笔刷画笔工具基本使用教程
  6. mysql creat datebase_MySQL CREATE DATABASE
  7. 主流的音视频SDK调研
  8. php获取搜索框的函数,PHP自定义函数获取搜索引擎来源关键字的方法
  9. 希捷1.5T硬盘2天变废铁!12代依然问题重重!购买慎重
  10. 【日语】日语单词 ---- 身体部位