链接https://vjudge.net/contest/66989#problem/F

坑爹的线段树,一直用区间更新做,做了半天一点眉目都没有,只好搜题解,感觉好堕落,经常不会做就搜题解,以后一定要慢慢克服

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
#define ll long long
#define ls l,m,rt<<1
#define rs m+1,r,rt<<1|1
const int maxn=;
ll value[maxn<<],vis[maxn<<];
void pushdown(int rt)//向下更新
{
if(value[rt]!=-)
{
value[rt<<]=value[rt<<|]=value[rt];//只要向下更新
value[rt]=-;
}
}
void update(int L,int R,int c,int l,int r,int rt)
{
if(L<=l&&r<=R)//区间更新
{
value[rt]=c;
return ;
}
if(value[rt]==c)return ;
if(value[rt]!=-)pushdown(rt);
int m=(l+r)>>;
if(L<=m)update(L,R,c,ls);
if(R>m)update(L,R,c,rs);
}
void query(int l,int r,int rt)
{
if(value[rt]>=)//也有可能是l==r
{
for(int i=l;i<=r;i++)
vis[i]=value[rt];//vis【i】记录i处的颜色
return ;
}
if(l!=r&&value[rt]==-)
{
int m=(l+r)>>;
query(ls);
query(rs);
}
}
int main()
{
int n,ans[];
while(~scanf("%d",&n)){
memset(ans,,sizeof(ans));
memset(vis,-,sizeof(vis));
memset(value,-,sizeof(value));//因为0也算一种颜色,所以初始化-1
for(int i=;i<=n;i++)
{
int a,b,c;
scanf("%d%d%d",&a,&b,&c);
update(a+,b,c,,,);//不能用0到8000处理
}
query(,,);
int i=;
while(i<maxn){
int color=vis[i],j=i+;
if(vis[i]==-){i++;continue;}//没有颜色
while(vis[j]!=-&&vis[j]==color&&j<maxn)j++;//向前推进直到下一个颜色出现
ans[color]++;
i=j;
}
for(int i=;i<=;i++)
if(ans[i])
printf("%d %d\n",i,ans[i]);
printf("\n");
}
return ;
}

最新文章

  1. android dialog
  2. linux资源使用配置文件 /etc/security/limits.conf和ulimit
  3. android输入法中的imeoption
  4. linux —— shell 编程(编程语法)
  5. java之两个字符串的比较
  6. IDF 实验室部分题目WriteUp
  7. Web前端浏览器兼容初探
  8. python - 初识面向对象
  9. jquery 获取name一样的值
  10. jQ not()选择器 与 css3 :not( selector )选择器
  11. INFO Dispatcher:42 - Unable to find &#39;struts.multipart.saveDir&#39; property setting. Defaulting to javax.servlet.context.tempdir
  12. 微信公共号:CTO技术总监
  13. 不使用JS实现表单验证
  14. Microsoft Corporation 去掉 windows 修改 启动加载 版权
  15. 获取cookie后,使用cookie进行接下来的自动化操作
  16. css 需要阴影的效果
  17. Resharper 使用帮助-自动生成文件头
  18. wepy - 与原生有什么不同(request)
  19. Linux中断 - ARM中断处理过程
  20. POJ1247-Magnificent Meatballs

热门文章

  1. 富文本,NSAttributedString,当需要改变的内容有相同的时候的解决方法
  2. Sublime 常用快捷键
  3. 10大支持移动“触摸操作”的JavaScript框架
  4. Python 获取 网易云音乐热门评论
  5. 移动端ios 输入框fixed固定在底部 焦点时乱跳加遮盖问题的解决 转自zhangyunling 加个人项目解决方案
  6. jQuery Ajax 实例 全解析(转)
  7. Linux 搭建svn版本库
  8. 前端总结&#183;基础篇&#183;JS(四)异步请求及跨域方案
  9. 20155205 2016-2017-2 《Java程序设计》第4周学习总结
  10. JPlayer Jquery video视频插件