要长8000仪表板。间染色的范围,问:最后,能看到的颜色,而且颜色一共有段出现

覆盖段

数据对比水   水可太暴力

段树:

#include "stdio.h"
#include "string.h"
struct node
{
int l,r,c;
}data[40010]; int color[8011];
void build(int l,int r,int k)
{
int mid;
data[k].l=l;
data[k].r=r;
data[k].c=-1;
if (l==r) return ; mid=(l+r)/2; build(l,mid,k*2);
build(mid+1,r,k*2+1);
} void updata(int l,int r,int k,int op)
{
int mid;
if (data[k].c==op) return ; if (data[k].l==l && data[k].r==r)
{
data[k].c=op;
return ;
} if (data[k].c!=-1)
{
data[k*2].c=data[k*2+1].c=data[k].c;
data[k].c=-1;
} mid=(data[k].l+data[k].r)/2; if (r<=mid) updata(l,r,k*2,op);
else
if (l>mid) updata(l,r,k*2+1,op);
else
{
updata(l,mid,k*2,op);
updata(mid+1,r,k*2+1,op);
} if (data[k*2].c==data[k*2+1].c) data[k].c=data[k*2].c;
else data[k].c=-1;
} void query(int k)
{
if (data[k].l==data[k].r)
{
color[data[k].l]=data[k].c;
return ;
}
if (data[k].c!=-1)
data[k*2].c=data[k*2+1].c=data[k].c;
query(k*2);
query(k*2+1);
}
int main()
{
int n,l,r,c,m,now,i;
int sum[8011];
m=8010;
while (scanf("%d",&n)!=EOF)
{
build(0,m,1);
while (n--)
{
scanf("%d%d%d",&l,&r,&c);
r--;
updata(l,r,1,c);
}
memset(color,-1,sizeof(color));
query(1); memset(sum,0,sizeof(sum)); now=color[0];
sum[now]++;
for (i=1;i<=m;i++)
if (color[i]!=now)
{
now=color[i];
sum[now]++;
} for (i=0;i<=m;i++)
if (sum[i]!=0) printf("%d %d\n",i,sum[i]);
printf("\n");
}
return 0;
}

版权声明:本文博客原创文章,博客,未经同意,不得转载。

ZOJ 1610 间隔染色段树的更多相关文章

  1. CodeForces 52C Circular RMQ(间隔周期段树,间隔更新,间隔总和)

    转载请注明出处:http://blog.csdn.net/u012860063 题目链接:http://codeforces.com/problemset/problem/52/C You are g ...

  2. ZOJ 1610——Count the Colors——————【线段树区间替换、求不同颜色区间段数】

    Count the Colors Time Limit:2000MS     Memory Limit:65536KB     64bit IO Format:%lld & %llu Subm ...

  3. 线段树区间染色 ZOJ 1610

    Count the Colors ZOJ - 1610 传送门 线段树区间染色求染色的片段数 #include <cstdio> #include <iostream> #in ...

  4. ZOJ 1610 Count the Colors (线段树区间更新)

    题目链接 题意 : 一根木棍,长8000,然后分别在不同的区间涂上不同的颜色,问你最后能够看到多少颜色,然后每个颜色有多少段,颜色大小从头到尾输出. 思路 :线段树区间更新一下,然后标记一下,最后从头 ...

  5. bzoj2243树链剖分+染色段数

    终于做了一道不是一眼出思路的代码题(⊙o⊙) 之前没有接触过这种关于染色段数的题目(其实上课好像讲过),于是百度了一下(现在思维能力好弱) 实际上每一段有用的信息就是总共有几段和两段各是什么颜色,在开 ...

  6. PKU A Simple Problem with Integers (段树更新间隔总和)

    意甲冠军:一个典型的段树C,Q问题,有n的数量a[i] (1~n),C, a, b,c在[a,b]加c Q a b 求[a,b]的和. #include<cstdio> #include& ...

  7. zoj 1610 Count the Colors

    http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=610  Count the Colors Time Limit:2000MS   ...

  8. HDU 1394 Minimum Inversion Number (数据结构-段树)

    Minimum Inversion Number Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java ...

  9. BZOJ 2588 Count on a tree (COT) 是持久的段树

    标题效果:两棵树之间的首次查询k大点的权利. 思维:树木覆盖树,事实上,它是正常的树木覆盖了持久段树. 由于使用权值段树可以寻求区间k大,然后应用到持久段树思想,间隔可以做减法.详见代码. CODE: ...

随机推荐

  1. ASC(22)H(大数+推公式)

    High Speed Trains Time Limit: 4000/2000MS (Java/Others)Memory Limit: 128000/64000KB (Java/Others) Su ...

  2. 2数组的slice和splice方法

    var colors=["blue","red","black","yellow","gray",& ...

  3. Qt之多线程

    源地址:http://blog.csdn.net/liuhongwei123888/article/details/6072320 Qt 是一种基于 C++ 的跨平台 GUI 系统,能够提供给用户构造 ...

  4. MFC获取rgb图像数据后动态显示及保存图片的方法

    该情况可用于视频通信中获取的位图数据回放显示或显示摄像头捕获的本地图像 第一种方法 #include<vfw.h> 加载 vfw32.lib  链接库 //---------------- ...

  5. 嵌入式ntp服务器的移植

    一.交叉编译 1.官网下载http://www.ntp.org/点击download选项页 我的版本是ntp-4.2.6p5.tar.gz 2.解压 tar -zxvf ntp-4.2.6p5.tar ...

  6. javascript (十) 变量

    变量必须以字母开头 变量也能以 $ 和 _ 符号开头(不过我们不推荐这么做) 变量名称对大小写敏感(y 和 Y 是不同的变量) 声明(创建) JavaScript 变量 在 JavaScript 中创 ...

  7. MFC的消息机制

    MFC的消息循环(::GetMessage,::PeekMessage)消息泵(CWinThread::PumpMessage)和MFC的消息在窗口之间的路由是两件不同的事情 分两个步骤完成: 1 “ ...

  8. uva 10196 Check The Check

    题目:10196 - Check The Check 思路:水题..模拟 这个代码,前半部分是在数统机房上课的时候写的,挫了点,懒得改了. #include <cstdio> #inclu ...

  9. CentOS5.6下安装Oracle10G软件 【保留报错经验】

    CentOS5.6下安装Oracle10G ****************************************************************************** ...

  10. Ogre嵌入MFC傻瓜全然教程(三)

    经过前两两篇博文的解说.我们已经完毕了渲染工作,但仅仅是渲染而没有交互性,本篇博文我们就来加上事件的处理方法. 首先我们须要为项目加入一个帧监听类:CMyFrameListener,为了直观,在这直接 ...