题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6183

题意:

有四种操作:
0:清除所有点
1 x y c : 给点(x, y)添加一种颜色c(颜色不会覆盖)
2 x y1 y2 : 在(0, y1)与(x, y2)所围成的矩形里有多少种颜色
3 : 程序结束

解法:

颜色最多51种。我们就建51棵线段树。 每个线段树按y轴建树,每个结点的值是在范围内的最小的x值,这题最关键的就是看到是x轴是查1-x

队友的CDQ+线段树因为写错了一句话,重现赛现场一直WA,我最后关头直接这样暴力过了。。。

#include <bits/stdc++.h>
using namespace std;
const int maxm = 3000010;
int tot, l[maxm], r[maxm], v[maxm], T[51];
void update(int &x,int L,int R,int pos,int val)
{
if(!x)
{
x = ++tot;
v[x] = val;
}
if(v[x]>val) v[x] = val;
if(L==R)return;
int mid=(L+R)>>1;
if(pos<=mid) update(l[x],L,mid,pos,val);
else update(r[x],mid+1,R,pos,val);
}
int flag;
int X;
int c, d; void query(int x, int L, int R)
{
if(flag||!x) return;
if(c<=L && R<=d)
{
if(v[x]<=X)flag=1;
return;
}
int mid=(L+R)>>1;
if(c<=mid) query(l[x],L,mid);
if(d>mid) query(r[x],mid+1,R);
}
int main()
{
for(int i=0; i<=50; i++)
{
T[i]=0;
}
while(1)
{
int op;
scanf("%d", &op);
if(op==3)return 0;
if(op==0)
{
for(int i=1; i<=tot; i++)l[i]=r[i]=0;
for(int i=0; i<=50; i++)T[i]=0;
tot=0;
}
if(op==1)
{
int x, y, c;
scanf("%d %d %d", &x,&y,&c);
update(T[c], 1, 1000000, y, x);
}
if(op==2)
{
scanf("%d %d %d", &X,&c,&d);
int ans=0;
for(int i=0; i<=50; i++)
{
flag=0;
query(T[i], 1, 1000000);
if(flag) ans++;
}
printf("%d\n",ans);
}
}
return 0;
}

最新文章

  1. node静态资源管理变迁之路
  2. 2009年到2013年甲子园ED
  3. 【java】:定时任务
  4. Easy Multiple Copy to Clipboard by ZeroClipboard
  5. nyoj 103 A + B problem II
  6. WebService 出现因 URL 意外地以“/HelloWorld”结束,请求格式无法识别。
  7. mahout 安装
  8. android EditText中的inputType
  9. mysql 5.7 怎么修改默认密码、随机密码
  10. FreeType in OpenCASCADE
  11. PHP 常量dirname(__file__)
  12. 《Java》第九周学习总结
  13. Exp5 MSF基础应用 20164320 王浩
  14. JS引擎的执行机制:探究EventLoop(含Macro Task和Micro Task)
  15. Python语法的转义字符
  16. 【软件工程1916|W(福州大学)_助教博客】团队第一次作业成绩公示
  17. 【Mysql】mysql乐观锁总结和实践
  18. Spring源码学习:day2
  19. css的优先级 和 权重
  20. 【Shell】获取设置日期和延时

热门文章

  1. C# 面向对象——多态
  2. (五)Redis集合Set操作
  3. JavaScript-序列化及转义
  4. 【转】C# 利用反射动态创建对象
  5. bzoj4870: [Shoi2017]组合数问题(DP+矩阵乘法优化)
  6. 仅此一文让你明白ASP.NET MVC 之Model的呈现
  7. HDU 5646
  8. Uva-oj Palindromes 暴力
  9. Base class does not contain a constructor that takes &#39;0&#39; argument
  10. 前端为什么要对url进行编码