bzoj1858

CMOS传输门(互补开关)实战指南 | 设计优化 + 常见问题解析 本文深入解析CMOS传输门(互补开关)的设计优化与常见问题,涵盖导通特性、版图设计、高频应用及混合信号设计等关键领域。通过实测数据和优化技巧,帮助工程师解决衬底连接、信号完整性等实际问题,提升数字和模拟混合信号设计的效率与可靠性。 阅读详情

线段树模板题


#include <cstdio>
#include <iostream>
using namespace std;
int n,m,f,u,v;

int l0[400010],r0[400010],m0[400010],l1[400010],r1[400010],m1[400010];
int l[400010],r[400010],lz[400010],sum[400010];

int read_int () {
	char c = getchar();
	int re = 0;
	for(;c > '9' || c < '0'; c = getchar());
	for(;c >= '0' && c <= '9';c = getchar())
		re = re * 10 + c - '0';
	return re;
}

void push_up (int M) {
	int ls = M << 1;
	int rs = ls | 1;
	sum[M] = sum[ls] + sum[rs];
	
	l0[M] = l0[ls];
	if(l0[M] == r[ls] - l[ls] + 1)
		l0[M] += l0[rs];
	r0[M] = r0[rs];
	if(r0[M] == r[rs] - l[rs] + 1)
		r0[M] += r0[ls];
	m0[M] = max(m0[ls],m0[rs]);
	m0[M] = max(m0[M],l0[rs] + r0[ls]);
	
	l1[M] = l1[ls];
	if(l1[M] == r[ls] - l[ls] + 1)
		l1[M] += l1[rs];
	r1[M] = r1[rs];
	if(r1[M] == r[rs] - l[rs] + 1)
		r1[M] += r1[ls];
	m1[M] = max(m1[ls],m1[rs]);
	m1[M] = max(m1[M],l1[rs] + r1[ls]);
}

void build (int L,int R,int M) {
	l[M] = L;
	r[M] = R;
	if(L == R) {
		sum[M] = read_int();
		if(sum[M])
			l1[M] = r1[M] = m1[M] = 1;
		else l0[M] = r0[M] = m0[M] = 1;
		return;
	}
	int mid = (L + R) / 2;
	build(L,mid,M << 1);
	build(mid + 1,R,M << 1 | 1);
	push_up(M);
}

void modi_0 (int M) {
	l0[M] = r0[M] = m0[M] = r[M] - l[M] + 1;
	sum[M] = l1[M] = r1[M] = m1[M] = 0;
	lz[M] = 1;	
}

void modi_1 (int M) {
	l0[M] = r0[M] = m0[M] = 0;
	sum[M] = l1[M] = r1[M] = m1[M] = r[M] - l[M] + 1;
	lz[M] = 2;	
}

void swp (int &a,int &b) {
	int t = a;
	a = b;
	b = t;
}

void modi_2 (int M) {
	swp(l0[M],l1[M]);
	swp(r0[M],r1[M]);
	swp(m0[M],m1[M]);
	sum[M] = r[M] - l[M] + 1 - sum[M];
	if(lz[M] == 1)
		lz[M] = 2;
	else {
		if(lz[M] == 2)
			lz[M] = 1;
		else {
			if(lz[M] == 3)
				lz[M] = 0;
			else lz[M] = 3;
		}
	}
}

void push_down (int M) {
	if(!lz[M])
		return;
	if(lz[M] == 1) {
		modi_0(M << 1);
		modi_0(M << 1 | 1);
	}
	else {
		if(lz[M] == 2) {
			modi_1(M << 1);
			modi_1(M << 1 | 1);
		}
		else {
			modi_2(M << 1);
			modi_2(M << 1 | 1);
		}
	}
	lz[M] = 0;
}

void change (int f,int L,int R,int M) {
	if(l[M] == L && r[M] == R) {
		if(f == 0)
			modi_0(M);
		else 
			if(f == 1)
				modi_1(M);
			else modi_2(M);
		return;
	}
	push_down(M);
	int mid = (l[M] + r[M]) / 2;
	if(L > mid)
		change(f,L,R,M << 1 | 1);
	else 
		if(R <= mid)
			change(f,L,R,M << 1);
		else {
			change(f,L,mid,M << 1);
			change(f,mid + 1,R,M << 1 | 1);
		}
	push_up(M);
}

int find_sum (int L,int R,int M) {
	if(L == l[M] && R == r[M])
		return sum[M];
	
	push_down(M);
	int mid = (l[M] + r[M]) / 2;
	if(R <= mid)	
		return find_sum(L,R,M << 1);
	else 
		if(L > mid)
			return find_sum(L,R,M << 1 | 1);
		else return find_sum(L,mid,M << 1) + find_sum(mid + 1,R,M << 1 | 1);
}

int find_1 (int L,int R,int &ll1,int &rr1,int M) {
	if(L == l[M] && R == r[M]) {
		ll1 = l1[M];
		rr1 = r1[M];
		return m1[M];
	}
	push_down(M);
	int mid = (l[M] + r[M]) / 2;
	if(L > mid)
		return find_1(L,R,ll1,rr1,M << 1 | 1);
	else 
		if(R <= mid)
			return find_1(L,R,ll1,rr1,M << 1);
		else {
			int re,lll1,lrr1,rll1,rrr1,lm1,rm1;
			lm1 = find_1(L,mid,lll1,lrr1,M << 1);
			rm1 = find_1(mid + 1,R,rll1,rrr1,M << 1 | 1);


			ll1 = lll1;
			if(ll1 == mid - L + 1)
				ll1 += rll1;
			rr1 = rrr1;
			if(rr1 == R - mid)
				rr1 += lrr1;
			re = max(lm1,rm1);
			return re = max(re,lrr1 + rll1);
		}
}

int main () {
	n = read_int();
	m = read_int();
	
	build(1,n,1);
	
	int ll1,rr1;
	for(int i = 1;i <= m;++i) {
		f = read_int();
		u = read_int() + 1;
		v = read_int() + 1;
		if(f <= 2)
			change(f,u,v,1);
		else {
			if(f == 3)
				printf("%d\n",find_sum(u,v,1));
			else printf("%d\n",find_1(u,v,ll1,rr1,1));
		}
	}
}


YOLO11改进|注意力机制篇|引入MLCA轻量级注意力机制 YOLO11中添加MLCA轻量级注意力机制 阅读详情

相关推荐

信号完整性之阻抗(五)

一、什么是阻抗 阻抗的概念是从高中或者初中大家可能就会接触到,没想它一直陪伴我十年了。在我的印象中,提到阻抗我可能就会想到电阻,这样的思想局限也限制了我平常思考问题。所以今天也想把阻抗这个概念在顺理一遍,有错误或者欠缺的地方希望大家指正。 1.什么是阻抗: ==在具有电阻、电感和电容的电路里,对电路中的电流所起的阻碍作用叫做阻抗。阻抗常用Z表示,是一个复数,实部称为电阻,虚部称为电抗,其中电容在电路中对交流电所起的阻碍作用称为容抗 ,电感在电路中对交流电所起的阻碍作用称为感抗,电容和电感在电路中对交流电引

刘小同学的博客 2587

BZOJ1858 序列操作 (线段树)

题目大意要求维护一个01序列,要求完成以下几种操作:0 x y 把区间[x,y]内的数字都变成0 1 x y 把区间[x,y]内的数字都变成1 2 x y 把区间[x,y]内的数字都异或1(取反) 3 x y 询问区间[x,y]内的数字1的个数 4 x y 询问区间[x,y]内最长连续数字1的个数题解线段数操作,因为有要完成操作4,所以要维护区间最左端和最右端的连续最长的长度。因为有取反操作

yashem66 1670

无人机上下通信信号解析程序和代码

总的来说,无人机上下行信号解析是无人机系统中非常重要的一部分,它关系到无人机的飞行控制和图像传输能力,对于保障无人机的飞行安全和数据传输质量具有重要作用。3. 读取和解析地面控制中心发送的命令和数据:程序还需要能够读取地面控制中心发送给无人机的命令和数据。1. 读取和解析无人机发送的命令和数据:程序需要能够读取无人机发送的信号,并解析其中的命令和数据。4. 将解析结果传递给无人机:解析地面控制中心发送的命令和数据后,程序需要将解析结果传递给无人机。具体的实现方式可以根据无人机的通信协议和硬件设备来确定。

2401_84824274的博客 2190

【BZOJ1858】序列操作(线段树)

题面BZOJ题解这题思路很简单,细节很烦,很码维护区间翻转和区间赋值标记当打到区间赋值标记时直接覆盖掉翻转标记下放标记的时候先放赋值标记再放翻转标记这样可以维护前4个操作对于第5个操作维护区间从左/右端点开始的最大连续0/10/1的个数以及区间内的最大连续0/10/1的个数做区间翻转的时候所有的关于0/10/1连续个数的计数全部要交换过来其他的细节自己注意一下#include<iostream> #

小蒟蒻yyb的博客 372

机器人C++开源库The Robotics Library (RL)使用手册(三)

进入VS工程,我们先看看这些功能函数及其依赖库的分布关系:rl命名空间下,主要有八大模块。搞定VS后将逐个拆解。

qq_34839823的博客 1736

Spring Boot Swagger未授权访问漏洞:原理、风险与修复方案详解

在微服务架构中,API文档管理是开发与运维的重要环节。Swagger作为RESTful API文档生成与调试的标准化工具,通过OpenAPI规范自动生成交互式接口文档,极大提升了开发效率。然而,其默认配置往往缺乏访问控制,导致文档端点直接暴露,形成未授权访问漏洞。从技术原理看,该漏洞源于Spring Boot等框架集成Swagger时,相关端点未纳入安全框架的拦截范围,攻击者可通过扫描常见路径获取完整的接口定义与数据结构。这不仅会造成敏感信息泄露,更可能成为越权操作、数据篡改等深度攻击的入口点。在工程实践中

weixin_42524171的博客 498

bzoj1858:序列操作 (线段树区间信息合并)

1858: [Scoi2010]序列操作 Time Limit: 10 Sec  Memory Limit: 64 MB Description lxhgww最近收到了一个01序列,序列里面包含了n个数,这些数要么是0,要么是1,现在对于这个序列有五种变换操作和询问操作: 0 a b 把[a, b]区间内的所有数全变成0 1 a b 把[a, b]区间内的所有数全变成1 2 a b

KsCla 593

Mumax3代码模板:从基础设置到材料参数优化

本文提供了一份详尽的Mumax3微磁学模拟代码模板,从基础网格设置、边界条件到核心材料参数(如钴的Msat、Aex、Ku1)配置与优化均有涵盖。文章深入解析了特征长度计算、初始化方法、弛豫与动力学模拟流程,并分享了并行计算与参数扫描等效率提升技巧,旨在帮助用户快速上手并优化模拟工作流。

moss5的博客 703

bzoj1858SCOI 序列操作 (线段树)

题目大意: 给定一个长度为n的01序列为,现在有m种操作 0&amp;nbsp;a&amp;nbsp;b0&amp;nbsp;a&amp;nbsp;b0\ a\ b 把[a,b][a,b][a,b]的数全部修改为0 1&amp;nbsp;a&amp;nbsp;b1&amp;nbsp;a&amp;nbsp;b1\ a\ b 把[a,b][a,b][a,b]的数全部修改为1 2&amp;nbsp;a&amp;nbsp;b2&

y_immortal的博客 QwQ(qdez_ymh) 287

HexView 脚本自动化工具:从刷写文件处理到批量转换实战

本文详细介绍了如何利用HexView脚本自动化工具高效处理嵌入式刷写文件。通过实战演示,文章展示了如何使用bat脚本实现S19、HEX等格式文件的剪切、填充、合并与批量转换,构建自动化流水线,从而显著提升汽车电子等领域的开发与生产效率。

weixin_29237635的博客 356

多 Agent 之间如何通信和协调?OpenClaw 的 Gateway 在其中扮演什么角色?

多 Agent 之间如何通信和协调?OpenClaw 的 Gateway 在其中扮演什么角色?

我哎GIS博客 1665

BZOJ 1858

1858: [Scoi2010]序列操作 Time Limit:10 SecMemory Limit:64 MBSubmit:2489Solved:1228[Submit][Status][Discuss] Description lxhgww最近收到了一个01序列,序列里面包含了n个数,这些数要么是0,要么是1,现在对于这个序列有五种变换操作和询问操作: ...

263

EtherCAT ROS2 入门教程(一)

本文介绍了EtherCAT驱动与ROS2的集成方案,主要包括三部分内容:1)在Ubuntu 22.04上安装IgH EtherCAT主站的详细步骤,包括内核配置、源码编译和网络适配器设置;2)构建ethercat_driver_ros2,通过ros2_control描述文件配置硬件接口和EtherCAT从站模块插件;3)使用方法,包括启动EtherCAT主站和运行配置包。该方案支持通过参数文件定义硬件接口,并提供通用和专用两种EtherCAT模块插件,便于开发基于EtherCAT的工业应用。

机器人控制与仿真应用 1531

bzoj1858序列操作 线段树

题目大意:01序列 可覆盖取反查询区间最长连续1 区间1的个数 BZOJ1858序列操作 记录多个信息 maxlen需要技巧 #滑稽#include<iostream> #include<cstdio> #include<cstring> #define N 100005 using namespace std; struct Seg {int l,r,mx[2],ln[2],rn[2],sum

yxr0105 438

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

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

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

BZOJ_1858_[Scoi2010]序列操作_线段树

BZOJ_1858_[Scoi2010]序列操作_线段树 Description lxhgww最近收到了一个01序列,序列里面包含了n个数,这些数要么是0,要么是1,现在对于这个序列有五种变换操作和询问操作: 0 a b 把[a, b]区间内的所有数全变成0 1 a b 把[a, b]区间内的所有数全变成1 2 a b 把[a,b]区间内的所有数全部取反,也就是说把所有的0变成1...

120

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

bzoj3453: tyvj 1858 XLkxc(拉格朗日插值)

传送门 考虑到∑i=1nik\sum_{i=1}^ni^k∑i=1n​ik为k+1k+1k+1次多项式,可以类推出答案为k+3k+3k+3次多项式。 直接拉格朗日插值即可。 代码: #include<bits/stdc++.h> #define ri register int using namespace std; const int rlen=1<<18|1; inli...

苟为蒟蒻又何妨 419

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

BZOJ1858 [Scoi2010]序列操作

BZOJ1858 [Scoi2010]序列操作Descriptionlxhgww最近收到了一个01序列,序列里面包含了n个数,这些数要么是0,要么是1,现在对于这个序列有五种变换操作和询问操作: 0 a b 把[a, b]区间内的所有数全变成0 1 a b 把[a, b]区间内的所有数全变成1 2 a b 把[a,b]区间内的所有数全部取反,也就是说把所有的0变成1,把所有的1变成0

YJSheep 2114

(WAWAWAWAWAWA) BZOJ 1858: [Scoi2010]序列操作

二次联通门 :BZOJ 1858: [Scoi2010]序列操作 /*   BZOJ 1858: [Scoi2010]序列操作 已经... 没有什么好怕的的了... 16K的代码... 调个MMP啊... */ #include <cstdio> void read (int &no...

weixin_30257433的博客 119

[BZOJ1858]序列操作 线段树

BZOJ1858 这题是不错的线段树练习题. 注意查询的时候返回一个节点而不是一个具体的数,否则无法做到合并信息并上传. 还好一个小时就写完啦 #include #include #include #include #include #include #define maxn 100010 using namespace std; int n,m,a[maxn]; struct tree{

QYQYQYQYQYQ’s Blog 386

bzoj1858: [Scoi2010]序列操作

bzoj1858: [Scoi2010]序列操作 一道裸线段树。的确是比较好想,然而代码写得莫名丑,于是调了很长时间。 维护区间中1的总数,左起连续1的个数,右起连续1的个数,最大连续1的个数,0同理。更新的时候左起连续1(0)要考虑左区间全为1(0)延伸到右区间的情况,右起同理。最大连续考虑左区间的右连续+右区间的左连续情况。标记打区间填充和取反。

蒟蒻名曰Starria 925

BZOJ1858: [Scoi2010]序列操作

BZOJ1858: [Scoi2010]序列操作 Description lxhgww最近收到了一个01序列,序列里面包含了n个数,这些数要么是0,要么是1,现在对于这个序列有五种变换操作和询问操作: 0 a b 把[a, b]区间内的所有数全变成0 1 a b 把[a, b]区间内的所有数全变成1 2 a b 把[a,b]区间内的所有数全部取反,也就是说把所有的0变成1,把所有的1...

weixin_30549175的博客 54

bzoj 1858

这个线段树要维护的东西挺多。。。连样例都不敢拿来调。。只好自己出更弱的数据0.0 1 #include<bits/stdc++.h> 2 #define inc(i,l,r) for(i=l;i<=r;i++) 3 #define dec(i,l,r) for(i=1;i>=r;i--) 4 #define inf 1e9 ...

diyan5166的博客 183

bzoj 1858 序列操作

bzoj 1858 序列操作 带有随机多个区间单值覆盖的区间操作题,可考虑用珂朵莉树解决. #include<bits/stdc++.h> using namespace std; #define ll long long #define mp make_pair #define pii pair<int,int> inline int read() { int...

weixin_30375427的博客 139

bzoj1858【scoi2010】序列操作

很麻烦的线段树模板

AaronPolaris 1295
上一篇: bzoj2753
下一篇: bzoj1854【二分图】
SAuppp
博客等级 码龄12年 5粉丝 97原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值