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

Sentinel--哨兵系列数据下载地址及流程更新【202310】 哨兵系列数据下载地址及流程更新。哨兵系列卫星作为哥白尼计划的一部分,主要目标便是对地球的观测任务。哥白尼计划由三部分组成:空间部分(哨兵系列太空任务与其他太空机构任务)、测量部分(提供海洋、大陆表面和大气信息的陆基和机载数据收集网络)、数据管理与全球共享。 阅读详情

Painting some colored segments on a line, some previously painted segments may be covered by some the subsequent ones.

Your task is counting the segments of different colors you can see at last.


Input

The first line of each data set contains exactly one integer n, 1 <= n <= 8000, equal to the number of colored segments.

Each of the following n lines consists of exactly 3 nonnegative integers separated by single spaces:

x1 x2 c

x1 and x2 indicate the left endpoint and right endpoint of the segment, c indicates the color of the segment.

All the numbers are in the range [0, 8000], and they are all integers.

Input may contain several data set, process to the end of file.


Output

Each line of the output should contain a color index that can be seen from the top, following the count of the segments of this color, they should be printed according to the color index.

If some color can't be seen, you shouldn't print it.

Print a blank line after every dataset.


Sample Input

5
0 4 4
0 3 1
3 4 2
0 2 2
0 2 3
4
0 1 1
3 4 1
1 3 2
1 3 1
6
0 1 0
1 2 1
2 3 1
1 2 0
2 3 0
1 2 1


Sample Output

1 1
2 1
3 1

1 1

0 2
1 1


题意: n个操作,每次把一段区间更新,最后统计每一种颜色的段数




#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<queue>
#include<stack>
#include<vector>
#include<set>
#include<map>


#define L(x) (x<<1)
#define R(x) (x<<1|1)
#define MID(x,y) ((x+y)>>1)

#define eps 1e-8
//typedef __int64 ll;

#define fre(i,a,b)  for(i = a; i <b; i++)
#define free(i,b,a) for(i = b; i >= a;i--)
#define mem(t, v)   memset ((t) , v, sizeof(t))
#define ssf(n)      scanf("%s", n)
#define sf(n)       scanf("%d", &n)
#define sff(a,b)    scanf("%d %d", &a, &b)
#define sfff(a,b,c) scanf("%d %d %d", &a, &b, &c)
#define pf          printf
#define bug         pf("Hi\n")

using namespace std;

#define INF 0x3f3f3f3f
#define N 8005

struct stud{
int le,ri;
int va;
}f[N*4];

int n,k;
int color[N];

struct studd{
int le,ri;
int va;
}ans[N];

inline void pushdown(int pos)
{
     f[L(pos)].va=f[R(pos)].va=f[pos].va;
     f[pos].va=-1;
}

void build(int pos,int le,int ri)
{
	f[pos].le=le;
	f[pos].ri=ri;
	f[pos].va=-1;
	if(le==ri) return ;

	int mid=MID(le,ri);

	build(L(pos),le,mid);
	build(R(pos),mid+1,ri);
}

void update(int pos,int le,int ri,int va)
{

   if(f[pos].le==le&&f[pos].ri==ri)
   {
      f[pos].va=va;
   	  return ;
   }

   if(f[pos].va!=-1)
	  pushdown(pos);

   int mid=MID(f[pos].le,f[pos].ri);

   if(mid>=ri)
	update(L(pos),le,ri,va);
   else
	if(mid<le)
	 update(R(pos),le,ri,va);
   else
   {
   	 update(L(pos),le,mid,va);
   	 update(R(pos),mid+1,ri,va);
   }

	if(f[L(pos)].va==f[R(pos)].va&&f[L(pos)].va!=-1)
		f[pos].va=f[pos].va;
}

void query(int pos)
{
	if(f[pos].va!=-1)
	{
		ans[k].le=f[pos].le;
		ans[k].ri=f[pos].ri;
		ans[k++].va=f[pos].va;
		return ;
	}

    if(f[pos].le==f[pos].ri) return ;

    query(L(pos));
    query(R(pos));
}

int main()
{
	int i,j;
	while(~sf(n))
	{

	   build(1,0,N);
       int le,ri,va;

       fre(i,0,n)
       {
       	  sfff(le,ri,va);
       	  update(1,le,ri-1,va);
       }
	k=0;

	query(1);

    mem(color,0);

    color[ans[0].va]++;

    fre(i,1,k)
      if(ans[i].va!=ans[i-1].va||ans[i-1].ri+1<ans[i].le)
		color[ans[i].va]++;

	fre(i,0,N)
	 if(color[i])
		pf("%d %d\n",i,color[i]);

	pf("\n");
	}
	return 0;
}




Linkage Mapper 工具参数详解——Building Network and Map Linkages 此文档用于解析使用LinkageMapper各输入输出参数详情以及可能的影响,并介绍了如何解释模型输出结果和输出参数,适合刚入手的人。篇幅很长很啰嗦,是因为每个参数都解释的万分细致。 阅读详情

相关推荐

QMT量化交易实战:如何用通达信预警数据自动买卖股票(附完整Python代码)

本文详细介绍了如何利用QMT平台结合通达信预警数据实现股票自动化交易,提供完整的Python代码实现。通过实时监控通达信预警板块文件,系统自动执行买卖操作,提升交易效率。文章涵盖系统架构设计、数据对接、信号处理、订单执行等核心模块,适合量化交易初学者和通达信用户参考实践。

weixin_29251567的博客 677

区间染色

给定一个长度为n(n &lt;= 100000)的木板,支持两种操作:   1、P a b c 将[a, b]区间段染色成c;   2、Q a b 询问[a, b]区间内有多少种颜色;   保证染色的颜色数少于30种。 思路: 因为颜色种类少于30,因此可以用int型整数来表示所有颜色,每一个比特代表一种颜色,颜色从0开始。 #include &lt;iostr...

brucehb的专栏 1462

利用HTML+CSS设计PPT:html-to-pptx实现自动化转换与可编辑输出

在办公自动化和前端开发领域,将网页技术应用于文档生成是一个重要的技术方向。其核心原理在于通过解析HTML/CSS的结构与样式,将其映射为目标文档的原生对象模型。这项技术的价值在于,它能够将Web技术栈强大的布局与样式能力(如Flexbox、CSS Grid)与办公软件(如Microsoft PowerPoint)的广泛兼容性和可编辑性相结合。在实际应用场景中,这种技术特别适合需要快速生成兼具设计感与实用性的演示文稿,例如数据报告、产品发布和营销材料。本文探讨的html-to-pptx项目正是这一思路的工程实

weixin_30652491的博客 486

线段树进阶-染色问题 附poj-2777题解

区域染色覆盖问题 假设某大学有一面文化墙,各个学院都可以在上面涂色,要求涂色区域高必须和墙一样,宽度任意但必须是整数(以米为单位)。涂色可以覆盖其他学院的涂色。现在若干个学院涂色之后最终这面墙上能看见多少种颜色。 这就是简单的染色问题了。当然有很多种不同的说法,但整体上离不开这两个问题:1.区域覆盖。2.多种染色方式。既然是区域操作,那么用线段树是比较合理了。用...

iwts 5373

手把手教你用RSoft BPM仿真一个1x2光分束器:从参数设置到结果分析全记录

本文详细介绍了使用RSoft BPM模块设计和仿真1×2光分束器的完整流程,包括参数设置、结构建模、仿真配置和结果分析。通过实战指南,帮助读者掌握光波导器件的仿真技术,实现50:50功率分配的设计目标,适用于光通信和集成光学领域的研究与应用。

weixin_30545945的博客 544

TC387 MCMCAN Message RAM配置详解:Tx Buffer与Rx FIFO地址布局

在嵌入式CAN/CAN FD通信系统中,缓冲区和FIFO是数据收发的核心机制,而AURIX TC3xx系列单片机将这一机制集成在了MCMCAN模块专用的Message RAM中。这是一块由CAN控制器独占的内存区域,开发人员需要按照寄存器规范手动划分Tx Buffer、Rx FIFO、过滤元素等子区间。合理的RAM布局能确保不同功能区域互不重叠、有序排列,避免数据覆盖与错帧。通过掌握TXBC、RXF0C等配置寄存器的字段含义,结合实用的地址布局表,可以显著降低多节点CAN通信的调试成本。本内容面向使用TC3

weixin_34226182的博客 221

ZOJ 1610 (线段树区间set)

题意: 在一段线段上涂色,新涂的颜色会覆盖旧的,问最后每种颜色各有多少段。 思路: 线段树区间覆盖,最后dfs查询一遍把每个位置的颜色查询出来,再扫一遍统计有多少段。 代码: #include &lt;algorithm&gt; #include  &lt;iostream&gt; #include   &lt;iomanip&gt; #include   &lt;sstream&gt; #i...

陋室 303

逆向工程实战:如何一步步破解京东APP的sign签名算法(附Frida脚本)

本文详细解析了京东APP的sign签名算法逆向工程实战,通过Frida脚本动态分析Java层和Native层的多层签名机制,揭示商业应用的加密协议设计。文章提供了完整的逆向工程方法论与工具链,帮助开发者深入理解移动应用安全防护体系,提升安全防御能力。

weixin_28622215的博客 916

并查集解决区间染色(经典模型)

将fa[i]定义为第i个点的左边第一个未被染色的点(包括自己定义两个并查集father数组lfrflf[i]:一个包含点i的相同颜色区间的左端点rf[i]:一个包含点i的相同颜色区间的右端点定义cosumcol数组cosum[i]:颜色为i的节点数量col[i]i点的颜色(如果不是相同颜色区间的左或右端点,则col[i]无效。

probable__的博客 717

2026华为OD面试手撕代码真题目录

一般面试的时候每一轮技术面都会出一到两个手撕代码题,这些题的特点就是,非常短小,易于理解。不可能会再出阅读理解一样的机试题的。但是这些题目也非常注意基本功,很注意细节的处理,一般都是easy+medium题目。但是大家一定要注意,因为大部分面试官上面一开始就会让你做题,直接看你所有的做题过程(防止有人水平一般,机试就网上找的答案的蒙混过关),手撕代码题会给你后面的面试定一个基调。

MISAYAONE的博客 9万+

银河麒麟桌面系统批量交付:封装自动化ISO镜像,百台装机效率提升10倍

麒麟桌面系统自动化ISO镜像定制摘要 本文详细介绍麒麟桌面版ISO安装镜像的定制方法,通过修改系统文件实现自动化安装部署。主要内容包括:1) 挂载原版ISO并提取文件;2) 使用unsquashfs解压系统文件进行定制化修改,包括添加系统标记配置;3) 配置ky-installer.cfg自动应答文件,设置安装参数如用户名、密码、分区方案等;4) 修改grub引导配置启用自动安装模式。该流程支持磁盘加密、自定义分区、自动登录等功能,生成的定制镜像可满足批量部署需求,显著提升系统安装效率。

信创运维工程师 · 银河麒麟 & 容器实战 | 金融生产环境迁移·等保加固 | 142篇原创·17万+阅读 1504

线段树(区间树)

文章目录为什么要使用线段树?什么是线段树?创建一棵线段树线段树的查询操作线段树的更新操作 为什么要使用线段树? 最经典的线段树问题:区间染色   有一面墙 ,长度为n,每次选择一段儿墙进行染色,m次操作后,我们可以看见多少种颜色?   例如上图,我们第一次将[1,8]的位置染成蓝色,然后再将[5,9]的位置染成黄色,然后将[6,15]的位置染成红色,最后把[12,15]的颜色染成绿色,我们通过这几次操作可以发现,图中被重复染色的位置是会被覆盖的,比如[12,15]这个位置显示被染成红色,然后又被染成了绿色

程序员波特 467

GJB设计开发各阶段的文件和记录要求

GJB设计开发各阶段的文件和记录要求

Abel的博客 4050

ZOJ-1610 Count the Colors(线段树,区间更新)

题目链接 http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1610 Painting some colored segments on a line, some previously painted segments may be covered by some the subsequent ones. Your task...

LSC__lsc的博客 301

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

ZOJ-1610 Count the Colors 【线段树+区间更新】

Description Painting some colored segments on a line, some previously painted segments may be covered by some the subsequent ones. Your task is counting the segments of different colors you c...

118

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

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

Count the Colors 题意:每次对区间染色,注意不染端点,然后问最后每种颜色有多少段。 题解:用线段树维护每个区间的颜色信息,然后因为不染端点,因此如果染0→40\rightarrow40→4,只会染444个区间那么我们将左端点加一即可。其它就是经典线段树lazylazylazy标记下放了。 代码 #include&lt;bits/stdc++.h&gt; #define DEBUG...

Eternally831143的博客 310

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

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

题目链接:https://zoj.pintia.cn/problem-sets/91827364500/problems/91827365109 题意:给你n个被染了颜色的线段,后面的会覆盖前面的,输出可以看到的颜色以及这个颜色染了多少条线段。 思路:这一题和POJ2528那个贴海报那题很像,都是用的是线段树区间更新,但是这个要输出每种颜色一共染了多少条线段,所以连续的区间染上了同一种颜色只能算是...

qq_43423395的博客 162

ZOJ - 1610 Count the Colors 线段树+区间更新

题目: Painting some colored segments on a line, some previously painted segments may be covered by some the subsequent ones. Your task is counting the segments of different colors you can see at last....

zamaochick的博客 216

【线段树区间更新】Count the Colors ZOJ - 1610

Think: 1知识点:线段树区间更新 2题意:一条长度为8000的布条,每次输入xi, yi, ci, 表示将区间[xi, yi]染色为ci,询问最终状态每个颜色分别染了几段,按照index顺序输入 3反思: 1>左右儿子结点编号不要传入错误 4思考:先将区间[1, 8000]全部初始化为-1, 之后输入xi, yi, ci之后将区间[xi+1, yi]颜色更新为ci, 更新完成后,进行

BlessingXRY的博客 436

ZOJ1610-Count the Colors-线段树区间更新&暴力

链接:https://zoj.pintia.cn/problem-sets/91827364500/problems/91827365109 Painting some colored segments on a line, some previously painted segments may be covered by some the subsequent ones. Your task ...

天与云与山与水 224

ZOJ 1610 Count the Colors (线段树区间更新与统计)

Painting some colored segments on a line, some previously painted segments may be covered by some the subsequent ones. Your task is counting the segments of different colors you can see at last....

dddddd12345456的博客 115

zoj 1610 Count the Colors 线段树区间更新——染色问题

Count the Colors Time Limit: 2 Seconds      Memory Limit: 65536 KB Painting some colored segments on a line, some previously painted segments may be covered by some the subsequent ones. Your ta

yu_ming_cong的专栏 369

ZOJ 1610 Count the Colors 【线段树区间更新 + 节点为区间】

传送门 // 题意: 定义一种新的数字加humble数字, 它的素因子只有2,3,5,7. 问你n个humble数字是多少.// 思路: 这道题和寻找丑数很像. 就只是多了一个因子7. 但是套路还是不变的. 因为后面的每一个数都是前面的某个数*2, *3, *5, *7得出的. 还是预处理出所有的humble数字, 用一个优先值为小的优先队列来预处理, 有一个问题就是有重复值, 那么每次取出来的

Anxdada -- 我等风来也等你 500

[线段树/区间更新] F - Count the Colors ZOJ - 1610

Count the ColorsTime Limit: 2 Seconds      Memory Limit: 65536 KBPainting some colored segments on a line, some previously painted segments may be covered by some the subsequent ones.Your task is coun...

博客 301

ZOJ - 1610 -- Count the Colors【线段树 + 区间更新】

Count the Colors 题意: 将一条线染色,先染色的线段可能会被后染色的覆盖,问染完色后, 每种颜色有多少段,某个颜色不在直线上就不输出。 思路; 将线段颜色,处理成点的颜色,某个线段被染色处理为这个区间的所有点被染成一种色,用一个color数组记录每个点的颜色,初始化为-1,也就是未被染色,ans数组记录每种颜色一共有多少段,修改区间颜色,就是区间更新, 由于是区间修改要用区间更新,然后查询整条直线,用prev表示前一个点的颜色,当递归到叶子结点的适合进行判断即可。 AC代码 /* 区间更新

qq_45249273的博客 316

zoj 1610 Count the Colors 线段树 区间更新

题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=610题意:题解:线段树区间更新 注意更新子节点,如果遇到的父节点已经被颜色覆盖掉的话,父节点 的颜色需要往下传递(因为父节点已经不会是原来那种颜色了)。代码:#include <bits/stdc++.h> using namespace std; typedef lo

yxg_123的博客 336
上一篇: HDU 4685 Prince and Princess(二分图 + 强连通)
下一篇: POJ 3264 Balanced Lineup(最大最小差值 线段树水题)
左眼皮跳跳~
博客等级 码龄13年 17粉丝 400原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值