zoj1610线段树区间覆盖
2024-08-31 18:35:19
链接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 ;
}
最新文章
- android dialog
- linux资源使用配置文件 /etc/security/limits.conf和ulimit
- android输入法中的imeoption
- linux —— shell 编程(编程语法)
- java之两个字符串的比较
- IDF 实验室部分题目WriteUp
- Web前端浏览器兼容初探
- python - 初识面向对象
- jquery 获取name一样的值
- jQ not()选择器 与 css3 :not( selector )选择器
- INFO Dispatcher:42 - Unable to find &#39;struts.multipart.saveDir&#39; property setting. Defaulting to javax.servlet.context.tempdir
- 微信公共号:CTO技术总监
- 不使用JS实现表单验证
- Microsoft Corporation 去掉 windows 修改 启动加载 版权
- 获取cookie后,使用cookie进行接下来的自动化操作
- css 需要阴影的效果
- Resharper 使用帮助-自动生成文件头
- wepy - 与原生有什么不同(request)
- Linux中断 - ARM中断处理过程
- POJ1247-Magnificent Meatballs
热门文章
- 富文本,NSAttributedString,当需要改变的内容有相同的时候的解决方法
- Sublime 常用快捷键
- 10大支持移动“触摸操作”的JavaScript框架
- Python 获取 网易云音乐热门评论
- 移动端ios 输入框fixed固定在底部 焦点时乱跳加遮盖问题的解决 转自zhangyunling 加个人项目解决方案
- jQuery Ajax 实例 全解析(转)
- Linux 搭建svn版本库
- 前端总结&#183;基础篇&#183;JS(四)异步请求及跨域方案
- 20155205 2016-2017-2 《Java程序设计》第4周学习总结
- JPlayer Jquery video视频插件