poj2528 线段树染色+离散化

《Python全栈系列教程》专栏介绍及文章汇总 阅读详情

题意:

共n段,俩操作

修改:第i段【li,ri】染成颜色i

仅最后一次查询:最后的颜色数

li ri<=1e7  n<=1e4

思路:

POJ2777 颜色数只有30 维护颜色状态S就能A

这题颜色数那么多。。怎么办?

修改:维护颜色替换标记col:区间颜色(多个颜色则col为0),满足区间加法

显然叶子col不为0


为什么维护这个呢,我的理解是:

如果没有col那么就需要

暴力查询,修改到每个叶子。修改复杂度是nlogn

现在有了col之后。

修改:如果当前区间是修改子区间我就不用往下修改了

查询:如果我发现当前区间col不为0,那么我就不用往下搜了

对吧,从而减少复杂度

(这里查询只有一次,暴力到叶子也没关系)

(主要还是修改不用一定到叶子减了很多复杂度w)


查询:【1,1e7】之内搜

用vis【】防止统计颜色时重复计算


当然:这题如果在1e7之内搜会超时

这里有个常规套路叫离散化

即颜色段可以压缩,如下:

段1:1 10    段2:1 3     段3:6 10  显然答案是3段

1 1 1 1 1 1 1 1 1 1 

2 2 2       3 3 3 3 3

离散化: 1 10 1 3 6 10->1 3 6 10

即rk[1]=1,rk[2]=3,rk[3]=6,rk[4]=10

原来的3对应现在的2  原来的10对应现在的4....

所以离散化后现在变成下面了

段1:1 4      段2:1 2     段3:3 4

1 1 1 1

2 2 3 3

答案不对!怎么少了一段????

4 5被离散化合并掉了QAQ

这里只要我们对原先相邻大于1的插入1个数就好了

1 10 1 3 6 10->1 2 3 4 6 7 10

现在等价于

1 1 1 1 1 1 1

2 2 2    3 3 3 

【1,3】颜色2  【3,5】颜色1 【5,7】颜色3

耶!成功了=w=

离散化之后rk[1]=1 rk[3]=3 rk[5]=6,rk[7]=10

非重复有序数列,对于某一个数想找下标,二分即可

难度:0.9

91ms

#include<stdio.h>
#include<math.h>
#include<string.h>
#include<algorithm> 
#include<iostream>
#include<vector>
#include<map>
using namespace std;
const int inf=0x3f3f3f;
struct point{
	int li;
	int ri;
};
bool vis[8*10005];
int rk[8*10005];
struct Stree
{
	int col;
} sts[16*10005]; //开4倍

point ps[10005];
void pushup(int root)
{
	if(sts[root<<1].col==sts[root<<1|1].col)
		sts[root].col=sts[root<<1].col;
}
void pushdown(int root)
{
	if(sts[root].col!=0)
	{
		sts[root<<1].col=sts[root].col;
		sts[root<<1|1].col=sts[root].col;
		sts[root].col=0;
	}
}
void build(int l,int r,int root)//根节点从1开始吧
{
	sts[root].col=0;//没了这句会WA,清空lazy跟val 
	if(l==r)//到达子节点
	{
		return;
	}
	else
	{
		int mid=(l+r)>>1;//(l+r)/2
		build(l,mid,root<<1);
		build(mid+1,r,root<<1|1);
	//	pushup(root);//更新本节点
	}
}
int query(int nowl,int nowr,int root)
{
	int ans=0;
	if(sts[root].col)
	{
		if(!vis[sts[root].col])
		{
			vis[sts[root].col]=1;
			return 1;
		}
		else return 0;
	}
	if(nowl==nowr)return 0;
	pushdown(root);
	int mid=(nowl+nowr)>>1;
	ans+=query(nowl,mid,root<<1);
	ans+=query(mid+1,nowr,root<<1|1);
	return ans;
}

void update(int nowl,int nowr,int ul,int ur,int root,int addval)//nowl,nowr 当前区间  ul,ur 需修改的区间 
{
	if(ul<=nowl&&ur>=nowr)//当前区间是修改区间的子区间
	{
		sts[root].col=addval;
		return ;
	}
	int mid=(nowl+nowr)>>1;
	pushdown(root);//避难 
	if(ul<=mid) update(nowl,mid,ul,ur,root<<1,addval);//左子树与修改区间有交集
	if(ur>mid)  update(mid+1,nowr,ul,ur,root<<1|1,addval);
	pushup(root);
	return ;
}
void op();
int main()
{
	int T;
	scanf("%d",&T);
	while(T--)
	{
		memset(vis,0,sizeof(vis));
		int n;int m=0;
		scanf("%d",&n);
		for(int i=1; i<=n; i++)
		{
			scanf("%d %d",&ps[i].li,&ps[i].ri);
			rk[++m]=ps[i].li;//离散化 
			rk[++m]=ps[i].ri;//离散化 
		}
//		for(int i=1;i<=m;i++)
//			printf("rkm:%d\n",rk[i]);

		sort(rk+1,rk+m+1);//离散化 先排序 
		int tot=1;//去重,插入要重新定下标 
		for(int i=2;i<=m;i++)
			if(rk[i]!=rk[i-1])rk[++tot]=rk[i];
		
		
		for(int i=tot;i>=2;i--)//插入 当区间长度>=2要插入一个中间值 
			if(rk[i]!=rk[i-1]+1)rk[++tot]= rk[i]-1;
		sort(rk+1,rk+tot+1);
	//	printf("tot:%d\n",tot);
		build(1,tot,1);
	//	op();
		for(int i=1;i<=n;i++)
		{
			int l=lower_bound(rk+1,rk+1+tot,ps[i].li)-rk;//找出第一个大于等于原下标的新下标
			int r=lower_bound(rk+1,rk+1+tot,ps[i].ri)-rk;	
			update(1,tot,l,r,1,i); 
			//op();
		} 
	//	op();
		int ans=query(1,tot,1);
		printf("%d\n",ans);
	 
	}

}



void sp(int t)
{
	for(int i=1;i<=t;i++)
	printf(" ");
}
void op()
{
	int pow2[10]={1,2,4,8,16,32};int n=16;
	printf("\n///////////\n");
	for(int i=1; i<=31; i++)
	{
		if(i==pow2[0])sp(15);
		if(i==pow2[1])sp(7);
		if(i==pow2[2])sp(3);
		if(i==pow2[3])sp(1);
		if(i>pow2[1]&&i<pow2[2])sp(15);
		if(i>pow2[2]&&i<pow2[3])sp(7);
		if(i>pow2[3]&&i<pow2[4])sp(3);
		if(i>pow2[4]&&i<pow2[5])sp(1);
		printf("%d",sts[i].col);
		if((i==pow2[1]-1)||(i==pow2[2]-1)||(i==pow2[3]-1)||(i==pow2[4]-1))
			printf("\n");
	}
	printf("\n///////////\n");
}


的










【数字孪生与仿真技术】06:航天器系统建模与验证全流程实战:从多学科建模到数字孪生(附完整代码与工业案例) 摘要:航天器系统开发面临多学科耦合强、验证流程复杂、可靠性要求极高的挑战。本文基于MATLAB/Simulink平台,系统阐述航天器从多域建模、动力系统开发到任务验证的全流程技术框架。内容涵盖Modelica统一建模规范、光伏-电池联合供电系统仿真、基于模型的需求追溯方法、蒙特卡洛可靠性分析及硬件在环测试等核心技术,并结合James Webb太空望远镜电力系统案例,展示工业级应用实践。文中提供完整的Simulink模型代码、仿真结果及流程图,最后探讨数字孪生与AI增强技术在航天器在轨运维中的未来应用。 阅读详情

相关推荐

SiC双向车载充电器技术解析与V2G应用

碳化硅(SiC)功率器件凭借其高击穿电场强度、优异热导率和低开关损耗特性,正在重塑电力电子系统的设计边界。作为第三代半导体材料的代表,SiC MOSFET通过降低80%的开关损耗,使车载充电器(OBC)效率突破96.5%。在双向能量转换架构中,图腾柱PFC与CLLC谐振变换器的组合实现了ZVS软开关,配合三维集成散热方案使功率密度达54W/in³。这些技术进步直接支撑了V2G(车辆到电网)应用场景,使电动车成为虚拟电厂(VPP)的关键单元。通过智能充放电策略优化,电池循环寿命可提升至4000次以上,为电力市

weixin_30693683的博客 274

【线段树_离散化_染色问题】POJ 2528 Mayor's posters

POJ 2528 Mayor's posters 题意: 在一个长度为1e7的墙上贴海报。n(<=1e4)张海报贴上去,海报可能会出现覆盖,问:贴完所有的海报之后能看见多少张(能看见一部分也算)海报。给出的海报信息是从第一张到最后一张(也就是贴的顺序)。 思路: 线段树染色问题。 区间数据范围过大,离散化。【注意因为是区间,所以离散化的时候要注意两个数据是不是...

L_X_ 360

GPD源码分析

gpd使用示例 先看下面一段代码,为标准gpd算法的使用方法,可以看到输入为点云,cloud_camera_; 输入:std::unique_ptr<gpd::util::Cloud> cloud_camera_ 输出: std::vector<std::unique_ptr<gpd::candidate::Hand>> grasps; // detect grasp poses gpd对象:std::unique_ptr<gpd::GraspDetect.

weixin_41003113的博客 2332

【详解】Mayor's posters POJ - 2528(线段树 区间染色 离散化) ⭐⭐⭐⭐

Mayor’s posters POJ - 2528 n(n<=10000) 个人依次贴海报,给出每张海报所贴的范围li,ri(1<=li<=ri<=10000000) 。求出最后还能看见多少张海报。 Input 第一行: 样例个数T 第二行: 贴海报的人n 第三行: 每个人贴海报的范围 接下来n行: 每个人贴海报的范围 Output 对于每一个输入,输出最后可以看到的海报...

Suprit's blog 926

RTL优化与PPA分析:数字电路设计的关键技术

在数字集成电路设计中,RTL(寄存器传输级)优化是提升芯片性能、降低功耗和减小面积的核心技术。通过PPA(Power-Performance-Area)指标的平衡,工程师可以在不同时序约束下实现设计的最优化。本文基于Synopsys Design Compiler和开源工具Yosys的实验数据,展示了RTL优化在算术单元和控制逻辑中的显著效果,特别是在乘法器和除法器等复杂运算模块中。文章还探讨了AI辅助工具在RTL优化中的应用潜力,为数字电路设计提供了实用的技术参考和工程实践建议。

weixin_42186387的博客 619

2026年数字IC设计华为笔试带答案解析

这篇文章是一份数字IC设计工程师笔试的试卷结构和部分题目解析。试卷包含单选题31题(每题2分)、多选题10题(每题4分)和简答/编程题4题(每题7分),总分130分,考试时长120分钟。 摘要重点: 试卷涵盖数字IC设计的关键知识点,包括Verilog语法、时序逻辑、状态机设计、跨时钟域处理等; 题目解析详细说明了各选项的正确性,如非阻塞赋值特性(D错误)、功耗影响因素(C与组合逻辑级数弱相关)等; 包含实际工程问题,如DDR4接口电平(SSTL-1.2)、卡诺图变量排序(格雷码)等; 部分题目考察基础概念

Open 368

贴海报 (线段树染色-离散化

n(n<=10000) 个人依次贴海报,给出每张海报所贴的范围li,ri(1<=li<=ri<=10000000) 。求出最后还能看见多少张海报。 虽然之前学过离散化,但用的时候就想不起来emm; 10000个海报最多有10000个区间 20000个坐标值,远少于10000000,因此采用离散化 将离散化后的坐标对应数组下标储存到线段树中 ; ...

weixin_30793643的博客 206

论文阅读:arxiv 2023 EduChat: A Large-Scale Language Model-based Chatbot System for Intelligent Education

EduChat是一个基于大规模语言模型(LLM)的教育领域聊天机器人系统,旨在为教师、学生和家长提供个性化、公平且富有同理心的智能教育服务。该系统通过在教育语料库上进行预训练和特定任务微调,强化了开放式问答、作文评估、苏格拉底式教学和情感支持等教育功能。为解决领域知识不足和知识更新问题,EduChat采用了检索增强技术,并融入心理学和教育学理论。该项目已开源,提供代码、数据和模型参数,推动LLM在智能教育中的应用发展。

CSPhD-winston的博客 1039

zoj2301||hdu1199(线段树染色+离散)

题目链接:

Delacour_的专栏 746

mjlab & MimicKit 宇树 G1 人形机器人强化学习训练部署

基于mjlab框架训练Unitree G1人形机器人执行双旋踢的示例。参考动作源自Jason Peng的MimicKit项目。数据转换脚本(MimicKit pkl → mjlab csv)完整训练结果与超参数预训练ONNX检查点用于部署实体硬件部署指南⚠️ 免责声明仅用于教育目的。对于因尝试复现此处展示结果而导致的财产损失或人身伤害,我们概不负责。操作硬件时请谨慎行事并保持良好判断力。

2506_90492529的博客 1700

【人工智能论文发表】基于医学病例文本和多模态大模型的医疗影像分割方法研究

摘要:本研究提出MMS-Former,一种基于级联多模态Transformer的文本引导医学图像分割框架。该模型创新性地将临床文本信息深度融入图像分割全过程,通过SwinUNETR提取视觉特征,ClinicalBERT编码病历文本,并在解码器的每个上采样阶段通过交叉注意力模块实现多级文本特征融合。实验表明,相比纯视觉模型,MMS-Former在Dice系数和IoU指标上分别提升3%以上,在处理边界模糊目标时表现尤为突出。模型还设计了结合Dice损失和图文对比损失的复合目标函数,确保分割精度与语义对齐。代码实

u012133341的博客 141

POJ 2528 (线段树 + 离散化)

Mayor's posters Description The citizens of Bytetown, AB, could not stand that the candidates in the mayoral election campaign have been placing their electoral posters at all places at their whim. ...

Error Man 的博客 441

基于STC8G1K08A单片机的PCA捕获外部信号(100~1000HZ)程序实现

基于STC8G1K08A单片机的PCA捕获外部信号(100~1000HZ)程序实现

weixin_74013772的博客 254

线段树区间染色 map,vector离散化 poj2528

#include<map> #include<vector> #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; //线段树区间染色,对于杂色区间tree赋-1.没有颜色赋值为0,其他颜色...

Black__wing的博客 298

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

poj 2528 线段树离散化+染色

题目链接 Mayor’s posters Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 92628 Accepted: 26452 Description The citizens of Bytetown, AB, could not stand that the candidates in the mayoral ele...

lifehappy 317

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

POJ2528 Mayor's posters —— 线段树染色 + 离散化

题目链接:https://vjudge.net/problem/POJ-2528 The citizens of Bytetown, AB, could not stand that the candidates in the mayoral election campaign have been placing their electoral posters at all pl...

alince20008的博客 145

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

poj 2528 线段树区间染色+离散化

The citizens of Bytetown, AB, could not stand that the candidates in the mayoral election campaign have been placing their electoral posters at all places at their whim. The city council has finally d...

1999 405

Mayors posters POJ - 2528 (线段树+离散化)

思路:对坐标进行离散化,然后建立线段树进行染色,每次对他的区间染一个颜色,然后遍历整面墙看看有多少个不同颜色 #include <cstdio> #include <cstring> #include <algorithm> #include <set> #include<iostream> //#include<bits/stdc++.h> using namespace std; typedef long long ll; #..

Ray.C.L的博客 507

[线段树染色+离散化] *POJ2528*

题目 思路 线段树染色板子题 主要是要离散化! 代码 #include<cstdio> #include<cstring> #include<cmath> #include<cstdlib> #include<cctype> #include<ctime> #include<iostream> #include&...

kosf_的博客 207

POJ 2528 Mayor's posters(线段树染色+离散化)

题目来源:POJ 题意:在墙上贴海报,后贴的会覆盖之前的,问最后能看见几张海报 线段树染色问题,注意题目里每个数字代表一个单位长度而不是点,普通离散化会出现问题。

CloveriiW的专栏 535

POJ 2528 离散化+线段树染色

题意: T个测试数据 n个操作 i.th line [u, v] 表示给区间 [u,v] 染上i色   问最后有几种颜色 区间范围很大,所以先离散化 注意区间更新的操作   #include #include #include #include #include #include #define N 10100*2 #define ll int #de

九野的博客 2146

POJ2528 线段树离散化** + 染色

POJ2528 参考题解 // Decline is inevitable, // Romance will last forever. //#include <bits/stdc++.h> #include <iostream> #include <cmath> #include <cstring> #include <string> #include <cstdio> #include <algorithm> #i

Strezia的博客 149

POJ 2528 Mayor's posters (区间离散化、线段树区间染色)

题意: 贴海报 后贴的会覆盖前面 求从Front能看到几张海报 分析: 区间离散化之后 就是一个裸的区间染色啦 套用线段树区间更新就可以搞啦 代码: // // Created by TaoSama on 2015-09-16 // Copyright (c) 2015 TaoSama. All rights reserved. // //#pragma comment(link

TaoSama's Microcosm 764

Mayor's posters POJ - 2528 线段树染色+特殊离散化

题目链接:https://vjudge.net/problem/POJ-2528#author=0 参考:https://blog.youkuaiyun.com/weixin_44077863/article/details/98037868 https://blog.youkuaiyun.com/baiyifeifei/article/details/81672170 题意:给区间染色,求最后能看到多少颜色。 思路:区...

A 190

POJ - 2528 (线段树区间染色 + 离散化)

mle了30来发 花了两个半小时 终于找到bug a了这题 a了之后不知道该开心还是该骂自己sb 题目思路 题目挺简单的就是区间染色 最后统计总区间的颜色个数 因为区间数不算大 但是区间的端点值可以很大 所以要对区间进行离散化 离散化的时候要注意两个点之间差值大于1时要插入一个他们中间的值进去 具体解释可以看这个博客 https://blog.youkuaiyun.com/zezzezzez/article/details/80230026 懂了这些之后就是套离散化和区间染色板子的板子题了 离散化板子 https://

daydreamer23333的博客 229

(重温)poj 2528 Mayor's posters 线段树 染色+离散化

这题算是比较经典的线段染色问题了, 但是我在POJ上很多人数据有问题,或者说无限WA,我刚

行走世间,皆为妖怪 679
上一篇: POJ3468 线段树 数据较严
下一篇: ZOJ1610 线段树染色
animalcoder
博客等级 码龄9年 43粉丝 150原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值