bzoj 4605: 崂山白花蛇草水
Description
Input
Output
Sample Input
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.
3
#include<cstdio>
#include<algorithm>
#define MN 1400010
#define M 2000
using namespace std; int n,m,X,ro[MN],L[MN],R[MN],x,y,num=,nm=,x1,x2,y1,y2,root=,xx,o,MMH=,mmh[MN],st[MN],l,r;
struct tr{
int x,y;
friend bool operator<(tr a,tr b){
if (X) return a.x<b.x;else return a.y<b.y;
}
}a[MN],A[MN];
struct tree{
int xa,xi,ya,yi,l,r,si;
}t[MN],T[MN];
char cs;
inline int read(){
cs=getchar();xx=;
while(cs<''||cs>'') cs=getchar();
while(cs>=''&&cs<='') xx=xx*+cs-,cs=getchar();
return xx;
}
inline void in(int &p,bool b){
if (!p){
p=num;
t[p].l=t[p].r=;
t[p].xa=t[p].xi=a[num].x;
t[p].ya=t[p].yi=a[num].y;
t[p].si=;
return;
}
X=b;t[p].si++;
if (a[num]<a[p]) in(t[p].l,b^);else in(t[p].r,b^);
t[p].xa=max(t[p].xa,a[num].x);
t[p].xi=min(t[p].xi,a[num].x);
t[p].ya=max(t[p].ya,a[num].y);
t[p].yi=min(t[p].yi,a[num].y);
}
inline int build(int l,int r,int now){
X=now;
int mid=(l+r)>>;
nth_element(A+l,A+mid,A+r+);
T[mid].si=r-l+;
T[mid].xa=T[mid].xi=A[mid].x;
T[mid].ya=T[mid].yi=A[mid].y;
if (l<mid) T[mid].l=build(l,mid-,now^),
T[mid].xa=max(T[T[mid].l].xa,T[mid].xa),
T[mid].xi=min(T[T[mid].l].xi,T[mid].xi),
T[mid].ya=max(T[T[mid].l].ya,T[mid].ya),
T[mid].yi=min(T[T[mid].l].yi,T[mid].yi);else T[mid].l=;
if (mid<r) T[mid].r=build(mid+,r,now^),
T[mid].xa=max(T[T[mid].r].xa,T[mid].xa),
T[mid].xi=min(T[T[mid].r].xi,T[mid].xi),
T[mid].ya=max(T[T[mid].r].ya,T[mid].ya),
T[mid].yi=min(T[T[mid].r].yi,T[mid].yi);else T[mid].r=;
return mid;
}
inline int wout(int p){
st[l=r=]=p;
while(l<=r){
A[l]=a[st[l]];
if (t[st[l]].l) st[++r]=t[st[l]].l;
if (t[st[l]].r) st[++r]=t[st[l]].r;
l++;
}
l=build(,r,);
for (register int i=;i<=r;i++) t[st[i]]=T[i],a[st[i]]=A[i],t[st[i]].l=st[t[st[i]].l],t[st[i]].r=st[t[st[i]].r];
return st[l];
return p;
}
inline void insert(int &p,int l,int r,int v,bool b){
if (!p) p=++nm,mmh[p]=M;
if (b){
a[++num].x=x;a[num].y=y;in(ro[p],);
if (t[ro[p]].si==mmh[p]) mmh[p]+=M,ro[p]=wout(ro[p]);
}
if (l==r) return;
int mid=l+r>>;
if (v<=mid) insert(L[p],l,mid,v,);else insert(R[p],mid+,r,v,);
}
inline int ask(int p){
if (t[p].xa<=x2&&t[p].xi>=x1&&t[p].ya<=y2&&t[p].yi>=y1) return ;
if (t[p].xi>x2||t[p].xa<x1||t[p].yi>y2||t[p].ya<y1) return ;
return ;
}
inline bool inl(int p){
if (a[p].x>=x1&&a[p].x<=x2&&a[p].y>=y1&&a[p].y<=y2) return ;
return ;
}
inline int QUE(int p){
int mmh=ask(p);
if (!mmh) return ;
if (mmh==) return t[p].si;else{
if (inl(p)) mmh=;else mmh=;
if (t[p].l) mmh+=QUE(t[p].l);
if (t[p].r) mmh+=QUE(t[p].r);
}
return mmh;
}
inline int que(int p,int l,int r,int k){
if (l==r) return l;
int u=;if (R[p]) u=QUE(ro[R[p]]);
int mid=l+r>>;
if (u<k) return que(L[p],l,mid,k-u);else return que(R[p],mid+,r,k);
}
int main(){
register int i,k;
n=read();m=read();
for (i=;i<=m;i++){
o=read();
if (o==) x=MMH^read(),y=MMH^read(),insert(root,,1e9,MMH^read(),);else{
x1=MMH^read();y1=MMH^read();x2=MMH^read();y2=MMH^read();k=MMH^read();
if (QUE(ro[root])<k) printf("NAIVE!ORZzyz.\n",MMH=);else
printf("%d\n",MMH=que(root,,1e9,k));
}
}
}
126604 kb 24240 ms C++/Edit 3738 B
bzoj 4605: 崂山白花蛇草水的更多相关文章
- BZOJ 4605 崂山白花蛇草水(权值线段树+KD树)
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=4605 [题目大意] 操作 1 x y k 表示在点(x,y)上放置k个物品, 操作 2 ...
- BZOJ4605:崂山白花蛇草水
浅谈\(K-D\) \(Tree\):https://www.cnblogs.com/AKMer/p/10387266.html 题目传送门:https://lydsy.com/JudgeOnline ...
- bzoj4605: 崂山白花蛇草水 权值线段树套KDtree
bzoj4605: 崂山白花蛇草水 链接 bzoj loj 思路 强制在线,那就权值线段树套KDtree好了,没啥好讲的. KDtree要加平衡因子来重构.另外,那水真难喝. 错误 树套树一边写过了, ...
- LG4848 崂山白花蛇草水
题意 神犇 Aleph 在 SDOI Round2 前立了一个 flag:如果进了省队,就现场直播喝崂山白花蛇草水.凭借着神犇 Aleph 的实力,他轻松地进了山东省省队,现在便是他履行诺言的时候了. ...
- 【BZOJ4605】崂山白花蛇草水 权值线段树+kd-tree
[BZOJ4605]崂山白花蛇草水 Description 神犇Aleph在SDOI Round2前立了一个flag:如果进了省队,就现场直播喝崂山白花蛇草水.凭借着神犇Aleph的实力,他轻松地进了 ...
- 【bzoj4605】崂山白花蛇草水 权值线段树套KD-tree
题目描述 神犇Aleph在SDOI Round2前立了一个flag:如果进了省队,就现场直播喝崂山白花蛇草水.凭借着神犇Aleph的实力,他轻松地进了山东省省队,现在便是他履行诺言的时候了.蒟蒻Bob ...
- 崂山白花蛇草水 权值线段树套KDtree
Description 神犇Aleph在SDOI Round2前立了一个flag:如果进了省队,就现场直播喝崂山白花蛇草水.凭借着神犇Aleph的实 力,他轻松地进了山东省省队,现在便是他履行诺言的时 ...
- 洛谷P4848 崂山白花蛇草水 权值线段树+KDtree
题目描述 神犇 \(Aleph\) 在 \(SDOI\ Round2\) 前立了一个 \(flag\):如果进了省队,就现场直播喝崂山白花蛇草水.凭借着神犇 \(Aleph\) 的实力,他轻松地进了山 ...
- 【BZOJ 4605】崂山白花蛇草水 替罪羊树套线段树
外层是借鉴了kd-tree的替罪羊里层是线段树,插入就是正常插入+拍扁重建,查询的时候,我们就像树状数组套线段树一样操作在替罪羊中找到的线段树根节点,但是对于在kd-tree查找过程中遇到的单点,我们 ...
随机推荐
- cors解决Web跨域访问问题
首先了解一下什么是跨域以及解决的几种常见方式. 跨域,指的是浏览器不能执行其他网站的脚本.它是由浏览器的同源策略造成的,是浏览器施加的安全限制. 所谓同源是指,域名,协议,端口均相同. 举例: 相对于 ...
- plugins/python/uwsgi_python.h:2:20: fatal error: Python.h: No such file or directory
装一台新服务器环境的时候,装uwsgi报错: plugins/python/uwsgi_python.h:2:20: fatal error: Python.h: No such file or di ...
- visual studio 2012打开提示 未能将网站×××配置为使用 ASP.NET 4.5 和 尚未在Web服务器上注册,您需要手动将Web服务器配置为使用ASP.NET 4.5
未能将网站×××配置为使用 ASP.NET 4.5.为了使此网站正确运行,您必须将它手动配置为使用ASP.NET 4.5. ASP.NET 4.5尚未在Web服务器上注册,您需要手动将Web服务器配置 ...
- 【算法】论平衡二叉树(AVL)的正确种植方法
参考资料 <算法(java)> — — Robert Sedgewick, Kevin Wayne <数据结构> ...
- BGP网络学习总结
1.前言 云计算在中国发展越来越快,企业逐步开始将业务迁移到公有云中,方便运维,节省成本.公有云最复杂的地方是网络,客户对网络的需求千奇百怪,造成网络环境极其复杂,稍有不慎,就会出现网络连通性 ...
- 599. Minimum Index Sum of Two Lists
Suppose Andy and Doris want to choose a restaurant for dinner, and they both have a list of favorite ...
- UVALive 4490 Help Bubu
题目大意:有n本书,高度值域为8,现可以把k本书拿出来再放进去,相邻的.高度相同的书算作一块,最小化块的个数.n=100. 强烈建议大家不要在做完区间DP后做别的DP题:区间DP是整体考虑,而一般DP ...
- web网站嵌入QQ临时会话代码 ----转载----小技巧
第一种 <img style="CURSOR: pointer" onclick="javascript:window.open('tencent://messag ...
- 在海航云中部署 keepalived
**本文属自我学习,不适合转载** 1. 准备工作 1.1 网络方面的准备工作 1.1.1 创建安全组 注意这里要添加 vrrp 协议支持,否则 keepalived 将无法正常工作. 1.1.2 创 ...
- 通过 kms 激活 office 2016
1.管理员模式打开cmd,并切换到office的安装路径 注:office2016默认安装在C:\Program Files\Microsoft Office\Office16,激活其他office自 ...