ZOJ1610 线段树区间计数

2023-11-01

(这题和之前的某道区间建立正好相反,给整懵了。)
题意: 给定一个长为 8000 8000 8000的区间,每次染色一定长度的区间,最后问你每种颜色的区间有多少段。
题解: 注意必须建 8000 8000 8000的树,然后模拟下递归过程(蒟蒻只会这么推)改下查询操作。


代码:

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;

const int N = 8010;
struct Node{
	int l, r, c;
}tr[N << 2];
int n, now, num[N];

void pushdown(int u) {
	if(tr[u].c != -1) {
		tr[u << 1].c = tr[u << 1 | 1].c = tr[u].c;
		tr[u].c = -1;
	}
}

void build(int u, int l, int r) {
	tr[u] = {l, r, -1};
	if(l == r) return ;
	
	int mid = l + r >> 1;
	build(u << 1, l, mid), build(u << 1 | 1, mid + 1, r);
}

void modify(int u, int l, int r, int c) {
	if(tr[u].l == l && tr[u].r == r) {
		tr[u].c = c;
		return ;
	}
	
	pushdown(u);
	int mid = tr[u].l + tr[u].r >> 1;
	if(r <= mid) modify(u << 1, l, r, c);
	else if(l > mid) modify(u << 1 | 1, l, r, c);
	else modify(u << 1, l, mid, c), modify(u << 1 | 1, mid + 1, r, c);
}

void query(int u) {
	if(tr[u].c != -1) {
		if(tr[u].c != now) num[tr[u].c]++;
		now = tr[u].c;
		return ;
	}
	
	if(tr[u].l == tr[u].r) {
		now = -1;
		return ;
	}
	query(u << 1);
	query(u << 1 | 1);
}

int main()
{
	while(~scanf("%d", &n)) {
		now = -1;
		memset(num, 0, sizeof num);
		build(1, 1, 8000);
	
		for(int i = 1; i <= n; i++) {
			int a, b, c;
			scanf("%d%d%d", &a, &b, &c);
			if(a < b) modify(1, a + 1, b, c);
		}
		
		query(1);
		for(int i = 0; i <= 8000; i++)
			if(num[i]) printf("%d %d\n", i, num[i]);
		puts(""); 
	}
	
	return 0;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ZOJ1610 线段树区间计数 的相关文章

随机推荐

  • C++ protobuf反射特征工程正确姿势

    文章目录 1 1 Message 1 2 Descriptor 1 2 FieldDescriptor 1 2 Reflection 2 1 特征工程如何使用 3 1 初始化获取FiledDescriptor信息 3 2 实时获取对应的特征
  • C++数据结构之静态链表

    1 静态链表的作用 在有些早期的高级语言中 并没有指针概念 所以带有指针域的链表都无法在这些高级语言中使用 于是 出现了用一维数组代替指针来描述单链表 这种一维数组描述的链表就被称为静态链表 用以为数组的方式来表示链表 因此拥有了数组的特性
  • System.ComponentModel.Win32Exception (0x80004005):拒绝访问。——解决办法

    一 问题如下 无法执行程序 所执行的命令为 C Windows Microsoft NET Framework64 v4 0 30319 csc exe noconfig fullpaths C Windows TEMP 二 背景 部署在客
  • Spark on YARN两种运行模式的演示

    前言 前面搭建好了Spark on YARN环境 接下来自然要使用这个集群 发挥它的计算性能 最常规的使用方式就是提交程序 但由于Driver有两种运行方式 导致了Spark on YARN也有两种运行模式 Cluster 集群 和 Cli
  • 图论基础之 图中找环

    对于有向图而言 可以使用拓扑排序的方式找出图中的环 include
  • openwrt生成固件firmware过程

    openwrt生成固件firmware过程 https blog csdn net viewsky11 article details 53097672 由于想看看生成各个文件系统格式文件的过程 所以在Target Images中把ext4
  • [网络安全自学篇] 一.入门笔记之看雪Web安全学习及异或解密示例

    最近开始学习网络安全相关知识 接触了好多新术语 感觉自己要学习的东西太多 真是学无止境 也发现了好几个默默无闻写着博客 做着开源的大神 准备好好学习下新知识 并分享些博客与博友们一起进步 加油 非常基础的文章 大神请飘过 谢谢各位看官 投票
  • 计算机视觉基础(七)—— 一文解析Harris角点检测

    在图像处理领域中 特征点又被称为兴趣点或者角点 它通常具有旋转不变性和光照不变性和视角不变性等优点 是图像的重要特征之一 常被应用到目标匹配 目标跟踪 三维重建等应用中 点特征主要指图像中的明显点 如突出的角点 边缘端点 极值点等等 用于点
  • C#入门代码集25个

    一 从控制台读取东西代码片断 using System class TestReadConsole public static void Main Console Write Enter your name string strName C
  • 小程序的拉流组件live-player的使用

    前言 我们在小程序中实现音视频 直播 录播 的播放时候 会使用到微信官方提供的两个组件 推流组件和拉流组件 这里来分享下他的拉流组件的使用和具体需要注意的点 效果图 1 拉流状态code日志 2 代码使用截图 官方文档 live playe
  • 帮我写爬取考研资料的代码

    我可以提供一些参考代码帮助您爬取考研资料 加载必要的库 import requests from bs4 import BeautifulSoup 设置网址 url http example com exam data 获取网页源代码 re
  • vue动态添加路由,element-admin后台路由

    很多后台项目的菜单都是可配置的 所以需要从后台取到菜单数据并加到路由映射用 1 第一步 将后台数据转换成vue router 需要的数据格式 以下是路由格式 declare type RouteConfig path string 路径 c
  • c/c++编程日记:用C语言实现消消乐游戏(附源码)

    描述 给定一个矩阵 判断移动哪一个格子 可以实现消除 定义连续三个即可消除 分析 先写一个函数 判断包含 i j 的格子是否可能实现消除 然后就是向右向下交换 然后调用上面写好的函数判断 被交换的两个格子是否实现消除 重点 1 只需要向右向
  • 关于IDEA中Spring配置文件中的提示:File is included in 4 contexts

    关于IDEA中Spring配置文件中的提示 File is included in 4 contexts 今天在学习SpringMVC框架的时候 由于web xml中需要绑定Spring的配置文件 在配好Spring的配置文件并运行Tomc
  • DINO-DETR在COCO缩减数据集上实验结果分析

    问题篇 博主在进行DINO DETR模型实验时 使用缩减后的COCO数据集进行训练 发现其mAP值只能达到0 27作用 故而修改了下pycocotool的代码 令其输出每个类别的AP值 来看看是由于什么原因导致这个问题 之所以这样是因为博主
  • springboot-内置Tomcat

    一 springboot的特性之一 基于springboot的特性 自动装配 Configuretion 注解 二 springboot内置Tomcat步骤 直接看SpringApplication方法的代码块 总纲 1 在SpringAp
  • keil出现错误declaration is incompatible

    错误来源 ECAT inc STM32appl h 38 error 147 declaration is incompatible with unsigned shortnPdInputSize declared at line 396
  • java.io.FileNotFoundException: open failed: EROFS (Read-only file system)

    在聊天中发视屏的时候 需要获取视屏某一帧的图片 以文件形式上传给服务器 然后就出了这个错 在确定文件读取权限都有的情况下 那么很可能就是路径不对一看果然 String filePah System currentTimeMillis png
  • MySQL主从同步原理

    主从复制 是用来建立一个和主数据库完全一样的数据库环境 称为从数据库 主数据库一般是准实时的业务数据库 原理 数据库有个bin log二进制文件 记录了所有sql语句 我们的目标就是把主数据库的bin log文件的sql语句复制过来 让其在
  • ZOJ1610 线段树区间计数

    这题和之前的某道区间建立正好相反 给整懵了 题意 给定一个长为 8000 8000 8000的区间 每次染色一定长度的区间 最后问你每种颜色的区间有多少段 题解 注意必须建 8000 8000 8000的树 然后模拟下递归过程 蒟蒻只会这么