题目链接

题意:

有四种操作

0操作 清空所有点

1操作 在(x,y)处插入一个带颜色的点

2 操作统计(1~x)(y1~y2)这个范围的不同的颜色数

3 结束

思路:

颜色数只有51个

我们可以建51颗线段树 因为每次查询都是1~x范围的 所以我们对于每个颜色的线段树

维护y轴的区间 节点的值维护区间最小的x

对于每次查询 我们就只需要查询 每种颜色是否有<=x的点即可

关于剪枝:

 TLE

7784MS

5584MS

#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1
#define inf 0x3f3f3f3f
const int maxn = 1000000+5;
int cnt,x,fg;
int ls[maxn*4],rs[maxn*4],Min[maxn*4],root[60];
inline void init(){memset(root,0,sizeof(root));ls[0]=0;rs[0]=0;Min[0]=inf;cnt=0;
}
inline void push_up(int rt){Min[rt]=min(Min[ls[rt]],Min[rs[rt]]);
}
inline void update(int &rt,int l,int r,int L,int val){if(!rt){rt=++cnt;ls[rt]=0;rs[rt]=0;Min[rt]=val;}if(l==r){Min[rt]=min(Min[rt],val);return ;}int m=(l+r)>>1;if(L<=m) update(ls[rt],l,m,L,val);else update(rs[rt],m+1,r,L,val);push_up(rt);
}
inline void query(int rt,int l,int r,int L,int R){if(fg||!rt) return ;if(L<=l&&r<=R) {if(Min[rt]<=x) fg=1;return ;}int m=(l+r)>>1;if(L<=m) query(ls[rt],l,m,L,R);if(R>m) query(rs[rt],m+1,r,L,R);
}
int main(){int op,y,c,l,r;int n=maxn;while(~scanf("%d",&op)){if(op==3) break;if(op==0){init();}else if(op==1){scanf("%d %d %d",&x,&y,&c);update(root[c],1,n,y,x);}else {scanf("%d %d %d",&x,&l,&r);int ans=0;for(int i=0;i<=50;i++){fg=0;query(root[i],1,n,l,r);ans+=fg;}printf("%d\n",ans);}}return 0;
}

View Code

距离省赛越来越近 又要被暴打了(大雾)

转载于:https://www.cnblogs.com/MengX/p/11291321.html

HDU - 6183 Color it 2017广西邀请赛(线段树)相关推荐

  1. HDU - 6183 Color it(动态开点线段树/树状数组套动态开点线段树)

    题目链接:点击查看 题目大意:给出一个二维平面坐标系,需要完成四种操作: 0:删除所有点 1 xycx\ y\ cx y c:在点 (x,y)(x,y)(x,y) 处添加颜色 ccc 2 xy1y2x ...

  2. 2017广西邀请赛重现赛

    总题解:http://www.nike0good.com/674.html 1001: 2017ACM/ICPC广西邀请赛-重现赛 1001 A Math Problem #include <i ...

  3. HDU 6183 2017广西邀请赛:Color it(线段树)

    题目太长了就直接放链接吧 http://acm.hdu.edu.cn/showproblem.php?pid=6183 题意: 一个空的坐标系,有④种操作:①1 x y c表示在(x, y)点染上颜色 ...

  4. HDU 6191 2017广西邀请赛:Query on A Tree(字典树启发式合并)

    题意: 有一棵n个节点的树,每个节点都有一个值,m次查询,每次两个数x y表示以x为根的子树中哪个节点权值异或y得出的结果最大,求最大结果 离线 和线段树合并一样,在搜索过程中将多个字典树并在一起 每 ...

  5. hdu 1556:Color the ball(第二类树状数组 —— 区间更新,点求和)

    Color the ball Time Limit: 9000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) T ...

  6. hdu 5511 Minimum Cut-Cut——分类讨论思想+线段树合并

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=5511 题意:割一些边使得无向图变成不连通的,并且恰好割了两条给定生成树上的边.满足非树边两段一定在给定生成 ...

  7. HDU 4911 http://acm.hdu.edu.cn/showproblem.php?pid=4911(线段树求逆序对)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4911 解题报告: 给出一个长度为n的序列,然后给出一个k,要你求最多做k次相邻的数字交换后,逆序数最少 ...

  8. 【HDU】4942 Game on S♂play 线段树

    传送门:[HDU]4942 Game on S♂play 题目分析:今天下午被这道题整死了,因为我的写法导致有的数可能变成负的,但是我们有察觉到,debug了一下午还是在吃饭的时候突然想到这个问题的. ...

  9. 【HDU】5238 Calculator 【中国剩余定理+线段树】

    传送门:[HDU]5238 Calculator 题目分析: 模数可以拆成四个小素数:7,13,17,19. 这样我们可以分别对这几个素数跑答案,最后中国剩余定理搞一下就好.中间我们用线段树,保存每个 ...

最新文章

  1. comparator 与comparable之间的关系 注意实现接口comparable<T>时候,T的取值为实现类的类型,眼高手低容易犯迷糊的地方提醒
  2. Pyomo+GLPK使用
  3. Linux下rz,sz
  4. GIAC 2020 全球互联网架构大会演讲实录:基于TarsGo的微服务技术架构实践
  5. python音乐下载器交互界面_基于Python实现下载网易音乐代码实例
  6. 探秘HDFS —— 发展历史、核心概念、架构、工作机制 (上)| 博文精选
  7. 网易云音乐java_网易云音乐被下架?掌握这几步,你也能做出网易云!
  8. SAP 软件PS 模块系统操作之一工作分解结构(WBS)的创建
  9. 【webssh】网页上的SSH终端
  10. 优化广域网带宽,让应用加速
  11. 数据众包平台Premise持续向美军提供情报数据
  12. 【正点原子STM32连载】第四章 STM32初体验 摘自【正点原子】MiniPro STM32H750 开发指南_V1.1
  13. 2019年5月9日-面试收获
  14. Java中将String转成Long或long
  15. 张小庆,在路上-开始(6)真心话还是大冒险
  16. 马斯洛需求层次五大阶段,你处于那一层呢?
  17. 蚂蚁队-冲刺日志(第1天)
  18. unity基础学习之法线贴图
  19. C++笔试编程题1:雀魂启动
  20. HTML导航栏的四种制作方法,jQuery+CSS3实现四种应用广泛的导航条制作实例详解

热门文章

  1. php ini 长连接秒数,php使用webSocket实现Echarts长连接自动刷新的解决方案(2):后端服务端代码返回json数据...
  2. ecs php mysql集成环境_在阿里云 CentOS 服务器(ECS)上搭建 nginx + mysql + php-fpm 环境...
  3. mysql 1066解决方法_MySQL查询语法帮助:错误#1066-表格/别名不唯...
  4. Git 初学札记(十)—— Reset 回退的三种状态解析
  5. mysql多数据源切换_CI 多数据库操作 切换数据库
  6. pyecharts本地文件_python数据可视化-pyecharts插件使用文档
  7. (DFS+DP)滑雪(poj1088)
  8. python实现火车票查询_python实现12306火车票查询器
  9. 检验int值在list中是否存在_R语言统计与绘图:卡方检验
  10. 《零基础》MySQL LIKE 子句(十六)