题意:给一段0-8000的线段染色 问最后 颜色x 有几段

题解:标准线段树  但是没有push_up  最后查询是单点按顺序查询每一个点

考虑过使用区间来维护不同的线段有多少种各色的线段  思路是 两个子区间合并:左子区最右边和右子区最左边如果相同,那么就不变,不同就+1  但是不好维护  所以直接单点查还更方便

注意  染色是染区间不是染点 例如   0  3是染  0 1 2 3这4个数中间的空  如果不考虑清楚这一点就会导致 染了  2-3 颜色1  0 2颜色2   3-4颜色3  0 到4颜色分别为   2 2 3 3只有两种颜色 而如果是染区间的话

2 3区间中染了 1 后面的操作都没有覆盖掉 所以要把边映射成点    n个点有n-1个边 那么很自然  把第一条边成1   8000也就是8000了 update就要 符合映射 让 l+1  即可

 #include<cstdio>
#include<algorithm>
#include<set>
#include<vector>
#include<cstring>
#include<iostream>
using namespace std;
const int maxn=+;
int num[maxn],ans[maxn];
struct Node{
int l,r,lazy,v;
void update(int x){
v=x;
lazy=x;
}
}tree[maxn*];
void push_up(int x){ }
void push_down(int x){
int lazyval=tree[x].lazy;
if(lazyval!=-){
tree[x<<].update(lazyval);
tree[x<<|].update(lazyval);
tree[x].lazy=-;
}
}
void update(int x,int l,int r,int c){
int L=tree[x].l,R=tree[x].r;
if(l<=L&&R<=r){
tree[x].update(c);
}
else{
int mid=L+R>>;
push_down(x);
if(mid>=l)update(x<<,l,r,c);
if(mid<r)update(x<<|,l,r,c);
// push_up(x);
}
}
int lastcolor=-;
int query(int x,int l,int r){
//int L=tree[x].l,R=tree[x].r;
if(l==r){
if(tree[x].v!=-&&tree[x].v!=lastcolor)ans[tree[x].v]++;
lastcolor=tree[x].v;
//if(lastcolor!=-1)cout<<l<<" " <<x<<" "<<tree[x].v<<endl;
}
else {
push_down(x);
int mid=l+r>>;
query(x<<,l,mid);
query(x<<|,mid+,r);
}
}
void build(int x,int l,int r){
tree[x].l=l,tree[x].r=r;
tree[x].lazy=-;
if(l==r){
tree[x].v=-;
//if(l==8000)cout<<" !zzz! "<<x<<endl;
return ;
}
else {
int mid=l+r>>;
build(x<<,l,mid);
build(x<<|,mid+,r);
//push_up(x);
} }
int main(){
int n;
while(scanf("%d",&n)==)
{
lastcolor=-;
build(,,);
memset(ans,,sizeof(ans));
for(int i=;i<=n;i++){
int x,y,c;
scanf("%d%d%d",&x,&y,&c);
update(,x+,y,c);
}
// cout<<tree[8286].v<<"!! "<<endl;
query(,,);
// cout<<tree[8286].v<<" 22222"<<endl;
for(int i=;i<=;i++){
if(ans[i]){
printf("%d %d\n",i,ans[i]);
}
}
cout<<endl;
}
}

F - Count the Colors ZOJ - 1610 线段树染色(染区间映射)的更多相关文章

  1. F - Count the Colors - zoj 1610(区间覆盖)

    有一块很长的画布,现在想在这块画布上画一些颜色,不过后面画的颜色会把前面画的颜色覆盖掉,现在想知道画完后这块画布的颜色分布,比如 1号颜色有几块,2号颜色有几块.... *************** ...

  2. ZOJ 1610 Count the Colors【题意+线段树区间更新&&单点查询】

    任意门:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1610 Count the Colors Time Limit: 2 ...

  3. (线段树) Count the Colors --ZOJ --1610

    链接: http://acm.hust.edu.cn/vjudge/contest/view.action?cid=82832#problem/F http://acm.zju.edu.cn/onli ...

  4. kuangbin专题七 ZOJ1610 Count the Colors (灵活线段树)

    Painting some colored segments on a line, some previously painted segments may be covered by some th ...

  5. Count the Colors ZOJ - 1610 区间颜色覆盖

    #include<stdio.h> #include<iostream> #include<string.h> #include<algorithm> ...

  6. F - Count the Colors

    F - Count the Colors ZOJ - 1610   思路:调了一个小时,但是发现自己线段树木有写错,颜色统计出了错误.但是不明白自己颜色统计为什么错了. 求大佬指点迷津.思路很简单,就 ...

  7. ZOJ - 1610 经典线段树染色问题

    这个是一个经典线段树染色问题,不过题目给的是左右左右坐标,即[0,3]包含0-1这一段 1-2这一段 2-3这一段,和传统的染色不太一样,不过其实也不用太着急. 我们把左边的坐标+1,即可,那么[0, ...

  8. ZOJ 3279-Ants(线段树)

    传送门:zoj 3279 Ants Ants Time Limit: 2 Seconds      Memory Limit: 32768 KB echo is a curious and cleve ...

  9. AtCoder Regular Contest 069 F Flags 二分,2-sat,线段树优化建图

    AtCoder Regular Contest 069 F Flags 二分,2-sat,线段树优化建图 链接 AtCoder 大意 在数轴上放上n个点,点i可能的位置有\(x_i\)或者\(y_i\ ...

随机推荐

  1. Java字符串操作及与C#字符串操作的不同

    每种语言都会有字符串的操作,因为字符串是我们平常开发使用频率最高的一种类型.今天我们来聊一下Java的字符串操作及在某些具体方法中与C#的不同,对于需要熟悉多种语言的人来说,作为一种参考.进行诫勉 首 ...

  2. Python监控服务器利器--psutil

    Python监控服务器利器--psutil 服务器的监控通过安装一些常用的监控软件之外,有时也需要运行一些shell或Python脚本:shell下可以使用系统自带的ps/free/top/df等sh ...

  3. 批量采集世纪佳缘会员图片及winhttp异步采集效率

    原始出处:http://www.cnblogs.com/Charltsing/p/winhttpasyn.html 最近老有人问能不能绕过世纪佳缘的会员验证来采集图片,我测试了一下,发现是可以的. 同 ...

  4. 使用VBA进行JS加密的反混淆,还原JS代码。

    本文地址:http://www.cnblogs.com/Charltsing/p/JSEval.html 联系QQ:564955427 类似下面的代码是登陆 全国企业信用信息公示系统(安徽)(网址:h ...

  5. 中国科学技术大学统一身份认证系统CAS

    CAS | Apereohttps://www.apereo.org/projects/cas 中国科学技术大学统一身份认证系统https://passport.ustc.edu.cn/login?s ...

  6. Python + selenium + pycharm 环境部署细节 和selenium、Jenkins简单介绍

    一.测试体系:Python + selenium + pycharm + Jenkins/docker 环境搭建: 1.安装python 3.4/3.5 2/3.6/ 3.7 2.配置环境变量 3.p ...

  7. 11 The superlative

    1 最高级用来表明三个或更多事物之间的关系.最高级是通过在形容词之前加 "the" 并在之后加 "-est",或在形容词之前加 "the most&q ...

  8. [转帖]国产紫光SSD不再只是实验室展品 开始批量出货

    国产紫光SSD不再只是实验室展品 开始批量出货 https://www.cnbeta.com/articles/tech/825865.htm 没听说有做HDD的 现做了SSD 弯道超车吗 可以实现全 ...

  9. WebService实例-CRM系统提供WebService实现用户注册功能

    <—start—> 编写crm的webservice接口,实现客户信息保存操作.在CustomerService接口中新增一个服务接口,用于添加客户注册的信息. @Path("/ ...

  10. python web需要了解哪些

    1. socket.tcp/ip.http(cookie.session.token).https.ssl 2. wsgi:https://www.python.org/dev/peps/pep-33 ...