POJ-3225 Help with Intervals 线段树

Design Compiler时序约束实战:如何用set_clock_uncertainty解决时钟抖动问题? 本文深入探讨了在Design Compiler时序约束实战中,如何精准运用set_clock_uncertainty命令解决时钟抖动等非理想性问题。文章详细解析了该命令在时钟树综合前后的不同应用策略、建立时间与保持时间的差异化设置,并对比了其与set_clock_jitter的适用场景,旨在帮助数字IC设计工程师制定稳健的时序约束,为后端物理实现预留合理的安全裕量,从而高效达成时序收敛。 阅读详情

        题目链接:http://poj.org/problem?id=3225

        题意:给你一些区间和操作,问你最后有哪些区间。

        很容易把操作化简,0,1表示是否包含区间,-1表示该区间内既有包含又有不包含:

                               U:把区间[l,r]覆盖成1
                               I:把[-∞,l)(r,∞]覆盖成0
                               D:把区间[l,r]覆盖成0
                               C:把[-∞,l)(r,∞]覆盖成0 , 且[l,r]区间0/1互换
                               S:[l,r]区间0/1互换

       直接覆盖比较简单,直接更新就好了。重要的是0/1互换,这里是一个异或操作,如果当前区间被完全覆盖,直接改变一下覆盖标记就可以了,否则改变异或标记,更新时向下传递。

       会发现端点不是很处理,这里参考了别人的方法,即每个坐标扩大2倍,奇数表示单位区间,偶数表示端点即可!

       My code:

//STATUS:C++_AC_954MS_2736KB 
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<vector>
#include<queue>
#include<math.h>
#include<map>
#include<set>
using namespace std;
#define LL __int64
#define pii pair<int,int>
#define lson l,mid,rt<<1
#define rson mid+1,r,rt<<1|1
const int MAX=65536*2,INF=200000000;
const double esp=1e-6;
void update(int l,int r,int rt);
void query(int l,int r,int rt);
void pushdown(int rt);
int cover[MAX<<2],flag[MAX<<2],ans[MAX];
int a,b,c,n=MAX-1;
char op[2];
void work(int rt) {
	if (cover[rt] != -1) cover[rt] ^= 1;
	else flag[rt] ^= 1;
}
int main()
{
//	freopen("in.txt","r",stdin);
	int i,ta,tb,ok;
	char lc,rc;
	while(~scanf("%s %c%d,%d%c",op,&lc,&a,&b,&rc))
	{
		ta=(a<<1)+(lc=='(');
		tb=(b<<1)-(rc==')');
		if(op[0]=='U' || op[0]=='D'){
			c=(op[0]=='U');
			a=ta,b=tb;
			update(0,n,1);
		}
		if(op[0]=='I' || op[0]=='C'){
			c=0;
			b=ta-1,a=0;
			update(0,n,1);
			a=tb+1,b=n;
			update(0,n,1);
		}
		if(op[0]=='C' || op[0]=='S'){
			c=-1;
			a=ta,b=tb;
			update(0,n,1);
		}
	}	
	query(0,n,1);
	for(i=ok=0;i<=n;i++){
		if(ans[i]){
			ok++;
			for(a=i;ans[i+1];i++);
			b=i;
			lc=(a&1)?'(':'[';
			rc=(b&1)?')':']';
			a>>=1,b=(b+1)>>1;
			if(ok>1)putchar(' ');
			printf("%c%d,%d%c",lc,a,b,rc);
		}
	}
	if(!ok)printf("empty set");
	putchar('\n');
	return 0;
}

void pushdown(int rt)
{
	if(cover[rt]!=-1){
		cover[rt<<1]=cover[rt<<1|1]=cover[rt];
		flag[rt<<1]=flag[rt<<1|1]=0;
		cover[rt]=-1;	
	}
	if(flag[rt]){
		work(rt<<1);
		work(rt<<1|1);
		flag[rt]=0;
	}
}

void update(int l,int r,int rt)
{
	if(c>=0 && cover[rt]==c)return;
	if(a<=l && r<=b){
		if(c!=-1){
			cover[rt]=c;
			flag[rt]=0;
		}
		else if(cover[rt]!=-1){
			cover[rt]^=1;
			flag[rt]=0;
		}
		else 
			flag[rt]^=1;
		return;
	}
	pushdown(rt);
	int mid=(l+r)>>1;
	if(a<=mid)
		update(lson);
	if(b>mid)
		update(rson);
}

void query(int l,int r,int rt)
{
	if(!cover[rt])
		return;
	if(cover[rt]==1){
		int i;
		for(i=l;i<=r;i++)
			ans[i]=1;
		return;
	}
	pushdown(rt);
	int mid=(l+r)>>1;
	query(lson);
	query(rson);
}

ML307A模组连接ONENET平台(AT指令步骤教程) ML307A 是一款集成度高、体积小的物联网通信模组,支持多种无线通信协议,如 LoRa、NB-IoT 等。它具有低功耗、远程通信等特点,适用于多种物联网场景。支持 LoRa 和 NB-IoT 等多种无线通信标准。提供丰富的 GPIO 接口。内置多种传感器支持。UART 接口:用于与微控制器或其他设备通信。GPIO 接口:可以连接外部传感器或执行器。电源接口:用于供电。OneNET 是中国移动推出的一款物联网开放平台,它提供了从数据采集、存储到分析的一站式解决方案。 阅读详情

相关推荐

Renesas:定时器输入捕获

一、PWM输入捕获 1、Smart Configurator配置 注意:在使用前,需要使能对应的定时器!否侧无法正常进行输入捕获! 2、脉冲宽度的获取 如何区分高低电平的脉冲宽度:最常用的方法就是在触发中断后,判断IO口的高低电平,来确认是上升沿触发的中断还是下降沿触发的中断。 若无法进入中断,可查看:Renesas:配置中断的常规流程 (1)中断方式(Smart Configurator生成的代码) #pragma interrupt r_Config_TAUB0_0_i...

不吃鱼的猫的博客 2481

poj 3225(线段树)

题目链接:http://poj.org/problem?id=3225 题意描述:给你一个集合初始化为空集,然后让它和其他集合进行一系列操作,最后输出操作之后的集合,集合操作有U表示求并集,I表示求交集,D表示S与给出集合求差集,C表示给出集合与S的集合求差集,这里的区

1037

fastadmin云快充充电桩系统部署文档uniapp

多商户 嘎嘎快充V1.0部署文档 一、服务器环境: 服务器配置4核心8GB内存5M带宽以上配置 VX next1402 只支持linux环境 nginx1.22 php7.2 开启redis、fileinfo扩展,关闭禁用workerman gatewayworkerman需要的函数,如pcntl相关的函数 mysql5.7 supervisor redis 注意: 1.站点必须配置https、websocket配置wss 2.注意开放直连服务端口:2024,并添加到安全组 二、必

itholiday2014的博客 1629

POJ 3225 线段树区间更新(经典)

题意:给定一个集合S,S为空,然后对个集合进行操作,一共有四种操作方式,分别是: 交:表示,A区间和B区间将交处。 并:表示,A区间和B区间合起来。 差集(A - B):表示在区间A而不在区间B的区间。 对称差:表示(A - B)并(B - A),在A不在B中并上在B不在A中 通过一些列的操作之后,最后得到的区间是什么,然后顺序将其输出出来,如果是空集的话就输出empty set。 想...

猫ER 564

STM32 USB AUDIO实战指南——从零构建音频设备

本文详细介绍了如何使用STM32F407构建USB音频设备,从硬件准备到软件配置,再到音频播放和录制功能的实现。通过STM32CubeMX配置和实战代码示例,帮助开发者快速掌握USB Audio Class规范,实现低延迟、高质量的音频传输,适用于语音交互、音乐播放等多种场景。

weixin_42549037的博客 484

【系统架构设计师-2025上半年真题】综合知识-参考答案及详解(75题完全回忆版)

【系统架构设计师-2025上半年真题】案例分析-参考答案及部分详解

数据知道的博客 1万+

poj 3225 区间(区间的交并补操作)

http://poj.org/problem?id=3225 一道题又做了一天。。这道题对我来说起初有N多难点。 1:区间的开闭如何解决。、 2:怎样把区间的交并补、对称差转化为对线段树的操作。 后来与实验室的同学讨论了后解决了前面两个问题。 对于区间的开闭,可以将区间放大一倍,偶数点表示端点,奇数点表示区间内线段,前开的话左端点加1,右开的话右端点减1。例如[1,3]可以表示成

2353

激光雷达的64线,32线,16线,你弄懂了吗?

激光雷达的 64 线、32 线、16 线是指激光雷达系统中能够同时发射和接收激光脉冲的激光线的数量5。

谢谢大家的关注和点赞!这里只有纯纯的知识干货,没有一句废话。希望能实实在在帮到大家~要是觉得有用,别忘了给我点支持哟,你 2637

POJ 3225 区间操作 交并补

U:把区间[l,r]覆盖成1 I:把[-∞,l)(r,∞]覆盖成0 D:把区间[l,r]覆盖成0 C:把[-∞,l)(r,∞]覆盖成0 , 且[l,r]区间0/1互换 S:[l,r]区间0/1互换   cover记录成段覆盖,xo记录互换 当一个节点得到覆盖标记时把异或标记清空 当一个节点得到异或标记的时候,先判断覆盖标记,如果是0或1,直接改变一下覆盖标记,不然的话改变异或标记

961

在 SAP S/4HANA Cloud Public Edition 中掌控 ABAP 生命周期管理:One-Off、Multi-Off 与 Scalable Delivery 的落地方法论

本文系统梳理了SAP S/4HANA Cloud Public Edition中ABAP扩展开发的三种生命周期管理模式:One-Off适用于企业内部扩展,通过Import Collection在三系统间流转;Multi-Off面向少量客户交付,基于gCTS和Git实现不连接系统间的传输;Scalable Delivery则将扩展产品化为add-on,支持规模化分发。文章结合RAP、OData等实际开发场景,对比分析了各模式的特点与适用边界,为国内团队提供了符合Public Cloud要求的开发与交付实践建议

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1495

【使用FPGA实现MIPI DSI接口】——如何使用FPGA实现MIPI DSI接口?这是一个让许多开发者都感到困扰的问题。本文将介绍如何使用FPGA设计和实现...

【使用FPGA实现MIPI DSI接口】——如何使用FPGA实现MIPI DSI接口?MIPI DSI(移动产业处理器接口 - 显示串行接口)是一种用于在移动设备中传输视频数据的标准接口,它是目前大部分智能手机和平板电脑所采用的显示接口。首先,我们需要实现MIPI DSI的物理层接口。在实现MIPI DSI接口后,我们还需要编写驱动程序来控制MIPI DSI显示屏显示图像。这里只是提供了MIPI DSI接口的物理层代码示例,完整的MIPI DSI接口实现需要包括控制器和驱动程序等更多内容。

uote_e的博客 1995

poj 3225 Help with Intervals

线段树

weixin_46266058的博客 868

Open-AutoGLM 实战:手把手教你用 AI 操作手机「喂饭教程」

Open-AutoGLM 是一个由智谱AI开源的手机操作智能体框架,由手机端智能助手框架Phone Agent和9B大小的模型AutoGLM-Phone-9B组成,借助ADB自动执行点击、滑动、输入等操作——用户只需用自然语言描述任务,系统便能自动规划并完成整个操作流程。

blues_C的博客 1267

POJ 3225 Help with Intervals 【线段树】

题目链接 segment tree 题意 给定集合S,S最初是空集。现对其进行一些操作:与一个集合求交、并、补、对称差。用区间表示出最终的S 分析 这个题有许多注意的地方(当然可能是我写法不太好),肝了一上午…… 那么首先想到用线段树来解决这个区间覆盖的问题。虽然是实数区间,但注意到区间端点始终是整数。于是我们整体乘2,用偶数来代表整数点,用奇数来...

babao9492的博客 167

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

POJ 3225 Help with Intervals 线段树

做了好多线段树,顿时感觉线段树博大精深,虽然最基本的只是递归的更新,但是在写线段树的时候需要注意的地方真是太多太多,每个题都有自己要注意的地方,每个题都有自己的解决问题的小技巧,因而做线段树的时候需要自己对于线段树有特定的分析和不同的做法,好了感慨完了开始说题。 本题说的是对一排数进行操作,主要有四个 Operation Notation Definition

beyhhhh的博客 407

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

poj 3225 Help with Intervals(线段树)

题目链接:poj 3225 Help with Intervals 题目大意:模拟集合操作,输出最终的集合。 解题思路:线段树。 U l r:[l,r]区间置为1I l r:[0,l),(r,maxn]置为0D l r:[l,r]区间置为0C l r:[0,l),(r,maxn]置为0,[l,r]区间取逆S l r:[l,r]区间取逆。 然后基本水水的线段树,注意一下区间开

不慌不忙、不急不躁 1340

【线段树】POJ3225 Help with intervals

【Problem】   LogLoader, Inc. is a company specialized in providing products for analyzing logs. While Ikki is working on graduation design, he is also engaged in an internship at LogLoader. Among...

a18523440518的博客 180

POJ3225 Help with Intervals 线段树区间更新

题目链接:http://poj.org/problem?id=3225 题目大意:给出区间操作交,并,补,差,和异或,问你在n次操作之后的区间是什么。 分析:这里我们用区间倍增来解决区间的开闭问题,然后对于每一种操作,我们用01表示该段区间是否存在。 实现代码如下: /* 倍增区间来解决区间的开闭问题,对于区间操作: U:把区间[l,r]覆盖成1 I:把[-∞,l)

AC_Gibson的专栏 619

Help with Intervals POJ - 3225(线段树)

线段树模拟区间的交并等操作,真是恶心的一题, #include &lt;iostream&gt; #include &lt;cstring&gt; using namespace std; #define lson l,mid,rt&lt;&lt;1 #define rson mid+1,r,rt&lt;&lt;1|1 #define MAXN 131072 int cont[MAXN...

leekerian的博客 164

POJ 3225 Help with Intervals(线段树)

POJ 3225 Help with Intervals 题目链接 集合数字有的为1,没有为0,那么几种操作对应就是置为0或置为1或者翻转,这个随便推推就可以了,然后开闭区间的处理方式就是把区间扩大成两倍,偶数存点,奇数存线段即可 代码: #include #include #define lson(x) ((x<<1)+1) #define rson(x) ((x<

Remilia's 839

POJ 3225 Help with Intervals 线段树

http://poj.org/problem?id=3225 题意: 给你一些区间的操作,要求最后的区间。初始时区间是空的。区间的长度N 思路: 本题区间的长度比较大, 如果要直接暴力的话复杂度会达到O(Q*N), 会超时。这样就需要 优化,回头考虑本题暴力的思想之所以会超时,是因为花了很多时间在区间的更新上,而且 区间的更新是每次都更新到单点,其实并不需要每次都更新到单点,这样就想到

Chris_Home 721

【线段树】POJ3225-Help with Intervals

---恢复内容开始--- 【题目大意】 (直接引用ACM神犇概括,貌似是notonlysucess?) U:把区间[l,r]覆盖成1 I:把[-∞,l)(r,∞]覆盖成0 D:把区间[l,r]覆盖成0 C:把[-∞,l)(r,∞]覆盖成0 , 且[l,r]区间0/1互换 S:[l,r]区间0/1互换 【思路】 由于涉及到开区间和闭区间,我们如此规定数组下表: 下标...

dianchunhui2654的博客 144

poj 3225 Help with Intervals(线段树区间更新)

题意: 有5种集合运输操作,问通过这些操作,最后能得到的取决是什么。 解析:初看这题没有什么思路,参考了网络上的题解才解决了该问题。这个题目就两个关键点,搞明白就没什么问题: 关于集合运算的推导规约,知道集合是什么东西就一定会推导! U:把区间[l,r]覆盖成1 I:把[-∞,l)(r,∞]覆盖成0 D:把区间[l,r]覆盖成0 C:把[-∞,l)(r,∞]覆盖成0 , 且[l,r]区

小G的ACM之路 565
上一篇: POJ-2528 Mayor's posters 线段树
下一篇: POJ-1436 orizontally Visible Segments 线段树
angle555945
博客等级 码龄15年 66粉丝 74原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值