一看C才[0,50],肯定要开51棵线段树维护y区间的最小x值啦

是男人就上51棵..等等空间爆几倍了

动态开点!51棵线段树用全局节点变量控制,有点像主席树

清空工作很简单,把51个树根清掉然后回收节点(tot=0)就行了

然而!真不知道那些内部数据是有多恶心的

MLE × 4

RTE × 4

最后在query那里强行截断9900ms+水过.....

看了下空间占用才8000k左右hhh

现场赛能做出来得键盘开光吧

#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
#define clr(a,b) memset(a,b,sizeof a)
#define rep(i,j,k) for(int i=j;i<=k;i++)
using namespace std;
const int maxn = 2e6+5e5+11;
const int oo = 0x3f3f3f3f;
int T[70];
struct ST{
int L[maxn<<2],R[maxn<<2],minx[maxn<<2];
int tot;
void init(){
clr(T,0);
tot=0;
L[0]=R[0]=0;
minx[0]=oo;
}
void pu(int o){
minx[o]=min(minx[L[o]],minx[R[o]]);
}
void update(int &o,int l,int r,int y,int x){
if(!o){
o=++tot;
L[o]=R[o]=0;
minx[o]=x;
}
if(l==r){
minx[o]=min(minx[o],x);
return ;
}
int m=l+r>>1;
if(y<=m) update(L[o],l,m,y,x);
else update(R[o],m+1,r,y,x);
pu(o);
}
int query(int &o,int l,int r,int LL,int RR){
if(!o){
return oo; //很重要!!!
}
if(LL<=l&&r<=RR){
return minx[o];
}
int m=l+r>>1;
int ans=oo;
if(LL<=m) ans=min(ans,query(L[o],l,m,LL,RR));
if(RR>m) ans=min(ans,query(R[o],m+1,r,LL,RR));
return ans;
}
}st;
const int n = 1e6;
int main(){
int op,x,y,yy1,yy2,c;
st.init();
while(scanf("%d",&op)!=EOF){
if(op==3)break;
else if(op==0) st.init();
else if(op==1){
scanf("%d%d%d",&x,&y,&c);
st.update(T[c],1,n,y,x);
}
else if(op==2){
scanf("%d%d%d",&x,&yy1,&yy2);
int ans=0,tmp;
rep(i,0,50){
tmp=st.query(T[i],1,n,yy1,yy2);
if(tmp<=x) ans++;
}
printf("%d\n",ans);
}
}
return 0;
}

HDU - 6183 动态开点线段树 || 令人绝望的线段树的更多相关文章

  1. BZOJ_4636_蒟蒻的数列_线段树+动态开点

    BZOJ_4636_蒟蒻的数列_线段树+动态开点 Description 蒟蒻DCrusher不仅喜欢玩扑克,还喜欢研究数列 题目描述 DCrusher有一个数列,初始值均为0,他进行N次操作,每次将 ...

  2. Subtree Minimum Query CodeForces - 893F (线段树合并+线段树动态开点)

    题目链接:https://cn.vjudge.net/problem/CodeForces-893F 题目大意:给你n个点,每一个点有权值,然后这n个点会构成一棵树,边权为1.然后有q次询问,每一次询 ...

  3. P3157 [CQOI2011]动态逆序对(树状数组套线段树)

    P3157 [CQOI2011]动态逆序对 树状数组套线段树 静态逆序对咋做?树状数组(别管归并QWQ) 然鹅动态的咋做? 我们考虑每次删除一个元素. 减去的就是与这个元素有关的逆序对数,介个可以预处 ...

  4. K - 回转寿司(值域段数(板题) + 动态开点)

    回转寿司 Description 酷爱日料的小Z经常光顾学校东门外的回转寿司店.在这里,一盘盘寿司通过传送带依次呈现在小Z眼前.不同的寿 司带给小Z的味觉感受是不一样的,我们定义小Z对每盘寿司都有一个 ...

  5. HDU 6183 Color it(动态开点线段树)

    题目原网址:http://acm.hdu.edu.cn/showproblem.php?pid=6183 题目中文翻译: Time Limit: 20000/10000 MS (Java/Others ...

  6. HDU - 6183 暴力,线段树动态开点,cdq分治

    B - Color itHDU - 6183 题目大意:有三种操作,0是清空所有点,1是给点(x,y)涂上颜色c,2是查询满足1<=a<=x,y1<=b<=y2的(a,b)点一 ...

  7. hdu 6183 Color it (线段树 动态开点)

    Do you like painting? Little D doesn't like painting, especially messy color paintings. Now Little B ...

  8. HDU - 6183:Color it (线段树&动态开点||CDQ分治)

    Do you like painting? Little D doesn't like painting, especially messy color paintings. Now Little B ...

  9. HDU 5877 2016大连网络赛 Weak Pair(树状数组,线段树,动态开点,启发式合并,可持久化线段树)

    Weak Pair Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others) Tota ...

随机推荐

  1. opennebula模板对照比较

    良好模板 有问题模板

  2. 在Ubuntu上源码安装NodeJS

    Refer http://nqdeng.github.io/7-days-nodejs/#7.1 前提条件: 确保系统下g++版本(g++ -v)在4.6以上,python版本(python --ve ...

  3. Linux PulseAudio

    一.简介 Linux的声音系统或许是最无序的子系统部分!作为Server来说,声音无足轻重,无人问津,而作为桌面来说太多的实现方案,各有各的长出和不足,ALSA经过多年的发展,基本统一了Linux声卡 ...

  4. Luogu 2886 [USACO07NOV]牛继电器Cow Relays

    BZOJ 1706权限题. 倍增$floyd$. 首先这道题有用的点最多只有$200$个,先离散化. 设$f_{p, i, j}$表示经过$2^p$条边从$i$到$j$的最短路,那么有转移$f_{p, ...

  5. SpringMVC——数据转换 & 数据格式化 & 数据校验

    一.数据绑定流程 1. Spring MVC 主框架将 ServletRequest 对象及目标方 法的入参实例传递给 WebDataBinderFactory 实例,以创 建 DataBinder ...

  6. js 清空 input[type=file]的值

    js 不能操作 input[type=file]但你可以将这个 input 的 dom 元素删除掉,再新增一个,或者替换掉 $("#UploadFile").replaceWith ...

  7. su 和sudo su 的区别

    su "user" 执行该命令,需要输入password,它是"user"中定义的用户的password,即,要变换成的用户的password.(如果已经用ro ...

  8. (转)ASP.NET MVC4+EasyUI+EntityFrameWork权限管理系统——数据库的设计(一)

    原文地址:http://www.cnblogs.com/cmsdn/p/3371576.html 快一年没写博客了,这段时间感觉好迷茫,写点博客,记录一下自己的成长过程,希望对大家也有帮助 先上图 一 ...

  9. 人脸识别 人工智能(AI)

    .. 如何通过AI实现 用我自己的数据集:能识别几张人脸.能否判断相似度.能否认出.

  10. POJ3295 Tautology(栈+枚举)

    Description WFF 'N PROOF is a logic game played with dice. Each die has six faces representing some ...