首页 > 其他分享 >进行一个脑洞治疗仪的保存

进行一个脑洞治疗仪的保存

时间:2023-10-19 15:01:27浏览次数:28  
标签:return int rson 保存 脑洞 tag lson 治疗仪 define

#include<iostream>
#include<fstream>
#include<algorithm>
//#define int long long
using namespace std;
struct node_t{
	int l, r;
	int lval, rval, val;
	int sum, tag;
#define l(x) tr[x].l
#define r(x) tr[x].r
#define lval(x) tr[x].lval
#define rval(x) tr[x].rval
#define val(x) tr[x].val
#define sum(x) tr[x].sum
#define tag(x) tr[x].tag
}tr[800005];
#define lson(u) (u << 1)
#define rson(u) (u << 1 | 1)
int a[200005];
int pushup(int u){
	sum(u) = sum(lson(u)) + sum(rson(u));
	val(u) = rval(lson(u)) + lval(rson(u));
	if(lval(lson(u)) == r(lson(u)) - l(lson(u)) + 1) lval(u) = lval(lson(u)) + lval(rson(u));
		else lval(u) = lval(lson(u));
	if(rval(rson(u)) == r(rson(u)) - l(rson(u)) + 1) rval(u) = rval(rson(u)) + rval(lson(u));
		else rval(u) = rval(rson(u));
	return 0;
}
int build(int u, int l, int r){
	l(u) = l, r(u) = r, tag(u) = 0;
	if(l == r){
		sum(u) = a[l];
		if(a[l] == 0) lval(u) = rval(u) = val(u) = 1;
		else lval(u) = rval(u) = val(u) = 0;
		return 0;
	}
	int mid = (l + r) >> 1;
	build(lson(u), l, mid);
	build(rson(u), mid + 1, r);
	return pushup(u), 0;
}
int pushdown(int u){
	if(tag(u) == 0) return 0;
	if(l(u) == r(u)) return tag(u) = 0, 0;
	if(tag(u) == 1){
		lval(lson(u)) = rval(lson(u)) = val(lson(u)) = r(lson(u)) - l(lson(u)) + 1,
			lval(rson(u)) = rval(rson(u)) = val(rson(u)) = r(rson(u)) - l(rson(u)) + 1;
		sum(lson(u)) = sum(rson(u)) = 0;
		tag(lson(u)) = tag(rson(u)) = 1, tag(u) = 0;
		return 0;
	}
	if(tag(u) == 2){
		lval(lson(u)) = rval(lson(u)) = val(lson(u)) = 0,
			lval(rson(u)) = rval(rson(u)) = val(rson(u)) = 0;
		sum(lson(u)) = r(lson(u)) - l(lson(u)) + 1, sum(rson(u)) = r(rson(u)) - l(rson(u)) + 1;
		tag(lson(u)) = tag(rson(u)) = 2, tag(u) = 0;
		return 0;
	}
	return 0;
}
int modify(int u, int l, int r, int v){
	if(l > r(u) || r < l(u)) return 0;
	if(l >= l(u) && r <= r(u)){
		if(v == 0){
			lval(u) = rval(u) = val(u) = r(u) - l(u) + 1;
			sum(u) = 0, tag(u) = 1;
		}
		else{
			lval(u) = rval(u) = val(u) = 0;
			sum(u) = r(u) - l(u) + 1, tag(u) = 2;
		}
		return 0;
	}
	pushdown(u);
	modify(lson(u), l, r, v), modify(rson(u), l, r, v);
	return pushup(u), 0;
}
int query(int u, int l, int r){
	if(l > r(u) || r < l(u)) return 0;
	if(l >= l(u) && r <= r(u))
		return sum(u);
	pushdown(u);
	return query(lson(u), l, r) + query(rson(u), l, r);
}
int query0(int u, int l, int r){
	return (r - l + 1) - query(1, l, r);
}
int find(int l, int r, int v){
	int L = l;
	while(l < r){
		int mid = (l + r) >> 1;
		if(query0(1, L, mid) < v)
			l = mid + 1;
		else r = mid;
	}
	return r;
}
int solve(int l0, int r0, int l1, int r1){
	int x = query(1, l0, r0);
	modify(1, l0, r0, 0);
	int pos = find(l1, r1, x);
	modify(1, l1, pos, 1);
	return 0;
}
int n, m;
signed main(){
	//ios::sync_with_stdio(0);
	//cin.tie(0), cout.tie(0);
	
	return 0;
}

标签:return,int,rson,保存,脑洞,tag,lson,治疗仪,define
From: https://www.cnblogs.com/AzusidNya/p/17774708.html

相关文章

  • 循序渐进介绍基于CommunityToolkit.Mvvm 和HandyControl的WPF应用端开发(10) -- 在Dat
    有时候,一些数据的录入可能需要使用表格直接录入会显得更加方便快捷,这种情况有时候也是由于客户使用习惯而提出,本篇随笔介绍在WPF应用端上使用DataGrid来直接新增、编辑、保存数据的处理。录入数据的时候,我们都采用在一个窗体界面中,根据不同内容进行录入,但是有时候涉及主从表的数......
  • 【Spring Boot+LogBack】高效记录日志,实现日志文件本地化保存!
    ......
  • 【小白必看】使用Python爬取喜马拉雅音频并保存的示例代码
    前言本文介绍了如何使用Python中的requests库来获取音频文件并保存到本地。在这个例子中,我们使用了喜马拉雅平台上的一个API接口来获取音频ID和名称,并使用这些信息构造音频地址,然后通过发送HTTP请求将音频内容下载保存到本地。运行效果截图导入requests库importrequests......
  • 【小白必看】Python爬虫实战之批量下载女神图片并保存到本地
    前言爬取网络上的图片是一种常见的需求,它可以帮助我们批量下载大量图片并进行后续处理。本文将介绍如何使用Python编写一个简单的爬虫,从指定网页中获取女神图片,并保存到本地。运行结果部分图片1.引入所需库首先需要导入两个库:requests用于发送网络请求,lxml用于解析......
  • 【玩转python系列】【小白必看】使用Python爬虫技术获取代理IP并保存到文件中
    前言这篇文章介绍了如何使用Python爬虫技术获取代理IP并保存到文件中。通过使用第三方库requests发送HTTP请求,并使用lxml库解析HTML,我们可以从多个网页上获取IP、Port和地址信息。本文将逐步解析代码的每一部分,帮助读者更好地理解爬虫的工作原理。导入依赖库importrequ......
  • PageOffice 6 保存数据区域数据同时保存文档
    在实际应用中,例如在线签订合同的时候,合同的签订日期,合同号等等这些信息既要保存到数据库,合同签订后又要将整个合同文件保存起来。这时候就需要用到PageOffice的保存数据区域数据的同时保存整个文件的功能。后端代码1.后端打开文件的接口方法中,在webOpen方法之前给SaveFilePage和......
  • 【Python&语义分割】Segment Anything(SAM)模型交互式分割+掩膜保存(三)
    ​我之前分享了SegmentAnything(SAM)模型的基本操作,这篇给大家分享下交互式语义分割代码,可以通过鼠标点击目标物生成对应的掩膜,同时我还加入了掩膜保存的代码。1SegmentAnything介绍1.1概况        MetaAI公司的SegmentAnything模型是一项革命性的技术,该模型能......
  • 完美兼容IE,chrome,ff的设为首页、加入收藏及保存到桌面js代码
    今天给大家分享一段设为首页、收藏本站及保存到桌面的js代码,非常实用。scripttype="text/javascript"//设为首页functionSetHome(obj,url){try{obj.style.behavior=’url(#default#homepage)’;obj.setHomePage(url);}catch(e){if(window.netscape){try{netscape.security.Priv......
  • cpu在执行 java时,java指令是保存在数据cache中还是指令cache中
    Java代码在运行时,首先由JVM(JavaVirtualMachine)编译器将Java字节码转换成本地机器代码,然后再由CPU执行。在CPU中,指令缓存(InstructionCache)和数据缓存(DataCache)都是用于提高CPU处理效能的缓存结构,它们是处理器访问内存的缓存。对于生成的代码(或者说指令),它会被放入指令缓......
  • 【译】使用保留大小写的查找和替换来保存您的命名方式
    VisualStudio搜索体验获得了一项新功能,允许用户查找和替换文本,而不必担心不同的大小写。例如,方法参数“catalogItemId”和对象属性“CatalogItemId”有相同的名称,但大小写不同,但都应该用类似“productId”的东西替换,并使用各自的大小写。 该功能是由用户请求的,他们......