一看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. Hyperledger Fabric Chaincode解析

    首先看下Blockchain结构,除了header指向下一个block的hash value外,block是由一组transaction构成, Transactions --> Blocks - ...

  3. js原型链prototype与__proto__以及new表达式

    对象模型的细节 https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Guide/Details_of_the_Object_Model

  4. Http Live Streaming 实现iphone在线播放视频[转]

    http://hi.baidu.com/lphack/item/83865611c5f82c8988a956df 本人新手,难免会出错,请各位指点! 最近要做一个项目,是通过iphone来播放工厂摄像 ...

  5. wpf使用truetype字体ttf

    查了半天都是语焉不详,这篇算是稍微详细点的:http://www.cnblogs.com/junhengml/p/6878933.html 要先查找到字体的字库名称,才能使用: <Window. ...

  6. POJ3259 Wormholes(SPFA判断负环)

    Description While exploring his many farms, Farmer John has discovered a number of amazing wormholes ...

  7. Extjs Hello extjs

    <html > <head runat="server"> <title></title> <link rel="s ...

  8. MVC Action控制方式

    1.Controller 的OnActionExecuting中控制 protected override void OnActionExecuting(ActionExecutingContext ...

  9. Graphics 小记

    1.切图 drowg.DrawImage(productImg1, new System.Drawing.Rectangle(30, 30, 300, 300), new System.Drawing ...

  10. 让IE播放PPT

    在win7下安装office 2003,想让ppt在ie里播放,然后供winform调用,显示并播放ppt,操作如下 HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Power ...