题目太长了就直接放链接吧

http://acm.hdu.edu.cn/showproblem.php?pid=6183

题意:

一个空的坐标系,有④种操作:①1 x y c表示在(x, y)点染上颜色c;②2 X y1 y2表示查询在(1, y1)到(X, y2)范围内有多少种不同的颜色:③0表示清屏;④3表示程序退出(0<=x, y<=1000000, 0<=c<=50)

主要就是前两个操作,后面两个操作其实就是多实例的意思

直接线段树就好了

颜色只有50种,可以建50棵线段树然后暴力

对于每一种颜色,因为查询的横坐标是1到X,所以对于每个y,你只需要知道离y轴最近的那个点在哪里

这样的话就可以按y坐标建树,查询的时候判断下范围内有没有点即可

这题有点卡常数,要优化下

#include<stdio.h>
#include<string.h>
int c, d, X, ok, root[55];
int cnt, L[3300000], R[3300000], v[3300000];
void Update(int &k, int l, int r, int a, int b)
{int m;if(k==0){k = ++cnt;v[k] = b;}if(v[k]>b)v[k] = b;if(l==r)return;m = (l+r)/2;if(a<=m)Update(L[k], l, m, a, b);elseUpdate(R[k], m+1, r, a, b);
}
void Query(int x, int l, int r)
{int m;if(ok || x==0)return;if(l>=c && r<=d){if(v[x]<=X)ok = 1;return;}m = (l+r)/2;if(c<=m)Query(L[x], l, m);if(d>=m+1)Query(R[x], m+1, r);
}
int main(void)
{int i, ans, opt, x, y;while(1){scanf("%d", &opt);if(opt==3)break;else if(opt==0){for(i=1;i<=cnt;i++)L[i] = R[i] = 0;memset(root, 0, sizeof(root));cnt = 0;}else if(opt==1){scanf("%d%d%d", &x, &y, &c);Update(root[c], 1, 1000000, y, x);}else if(opt==2){scanf("%d%d%d", &X, &c, &d);ans = 0;for(i=0;i<=50;i++){ok = 0;Query(root[i], 1, 1000000);ans += ok;}printf("%d\n", ans);}}return 0;
}

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

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

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

  2. HDU 6184 2017广西邀请赛:Counting Stars(三元环)

    题意: n个点m条边的无向图,问有多少个A-structure 其中A-structure满足V=(A,B,C,D) && E=(AB,BC,CD,DA,AC) 可以看出A-struc ...

  3. HDU 6185 2017广西邀请赛:Covering(矩阵快速幂)

    题意: 用1*2的骨牌铺满4*n的矩形总共有多种方法 经典题:可见骨牌铺方格的多种做法 因为宽只有4,考虑先求递推式,假设当前长度为x,有: ①长度为x-1的所有情况后面竖着放2个骨牌,f(x) += ...

  4. HDU 6188 2017广西邀请赛:Duizi and Shunzi

    题意: 有n张牌,每张牌上都有一个不超过n的正整数,你可以选择三张数字连续的牌作为一个顺子,也可以选择两张数字一样的牌作为一个对子,现要让对子和顺子的数量之和尽可能多,求最大数量 先排序 因为对子只消 ...

  5. HDU 6186 2017广西邀请赛:CS Course

    题意: n个数,m次查询,每次给出一个p,求出除了第p个数以外其它所有数的且和,或和,异或和 统计下每个二进制位1的数量,例如z[5] = x表示有x个数第5个二进制位为1 之后每次查询只要check ...

  6. HDU 6182 2017广西邀请赛:A Math Problem

    题意: 给你一个n,问有多少个正整数k满足k^k<=n 暴力枚举,k不会超过15,唯一的坑点就是可能会爆long long #include<stdio.h> #define LL ...

  7. 2017广西邀请赛重现赛

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

  8. Count Color poj2777 线段树

    Count Color poj2777 线段树 题意 有一个长木板,现在往上面在一定区间内刷颜色,后来刷的颜色会掩盖掉前面刷的颜色,问每次一定区间内可以看到多少种颜色. 解题思路 这里使用线段树,因为 ...

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

    题目链接 题意: 有四种操作 0操作 清空所有点 1操作 在(x,y)处插入一个带颜色的点 2 操作统计(1~x)(y1~y2)这个范围的不同的颜色数 3 结束 思路: 颜色数只有51个 我们可以建5 ...

最新文章

  1. c 语言字符串转二进制,在C ++中将字符串转换为二进制序列
  2. .NET Remoting构建分布式数据库查询
  3. Py之wxPython:利用wxPython设计GUI界面(图片背景+简单按钮)
  4. KMP算法之 好理解的模板
  5. gradle全局使用阿里云镜像
  6. mysql 分库分表架构与方案
  7. 机器学习之凸优化原理推导及相关知识总结
  8. 摄像头分辨率怎么调整_手机摄像头测试:细数手机摄像头由单摄到多摄有哪些变化...
  9. Java多线程编程核心技术-多线程基础使用
  10. 2022年的第一个工作日,整理了风控的这些内容
  11. fastReport 绑定DataBand数据源后还是打印出一条数据
  12. 分类战车SVM全系列
  13. html5增加用户代码,HTML5 用户注册页面源代码
  14. win10没有realtek高清晰音频管理器_Win10如何让电脑睡眠不断网?电脑睡眠状态不断网继续下载的方法...
  15. [].push.apply(a, b)是什么意思
  16. 【小程序开发】—— 封装自定义弹窗组件
  17. 【备忘】零基础学习java学习路线,从菜鸟到大牛的视频教程
  18. python_爬校花图片
  19. 基于jsp的KTV管理系统mysql
  20. vmware虚拟机镜像制作成QCOW2

热门文章

  1. python的优点有哪些-python的优点和缺点是什么?
  2. 线上python课程一般多少钱-学习Python这门课程大概需要多久?费用是多少?
  3. python自动化办公模块有哪些-python常见的命令行交互自动化模块有哪些
  4. python和java哪个好-python和java哪个更强大?
  5. python开发软件的实例-如何编写Python软件开发文档(7个技巧)
  6. 学python语言有前途吗-学习python的前景怎么样?
  7. R-查询子段元素和 提前储存
  8. css文字竖直显示_CSS属性设置 -- 盒子模型
  9. Vue实现可折叠导航菜单~非常详细
  10. 嵌套组合图echarts