bzoj3110 k大数查询 zjoi2013 【树套树】

[ZJOI 2013] bzoj3110 K大数查询 【树套树】 Description 有N个位置,M个操作。操作有两种,每次操作如果是1 a b c的形式表示在第a个位置到第b个位置,每个位置加入一个数c 如果是2 a b c形式,表示询问从第a个位置到第b个位置,第C大的数是多少。 Input 第一行N,M 接下来M行,每行形如1 a b c或2 a b c Output 输出每个询问的结果 Sample Input 阅读详情

树套树。

在一个区间里面求另一个区间的值


本来第一反应是treap套线段树   后来发现代码难度对我比较高  orz


果断改成外层权值线段树  套  内层区间线段树


内层空间硬开开不下。。

只好先按着内存上限开了

然后用一个变量记录某个点对应的内层线段树节点

实现一个伪指针


内层的lazy加上永久标记比较快\(^o^)/~

#include <cstdio>
#define L(i,j,k) for(int i = j;i <= k;i++)
#define LL long long
int n,m,op,a,b,tmp1;
LL c,cnt;
struct point {
	int ch[2];
	int l,r;
	int x,lazy;
}use[9999999];
int t[200003];
void insert_i (int u,int L,int R) {
	if(use[u].l == L && R == use[u].r) {
		use[u].lazy++;
		use[u].x +=R - L + 1;
		return;
	}
	int mid = (use[u].l + use[u].r) / 2;
	if(L > mid) {
		if(!use[u].ch[1])
			use[u].ch[1] = ++cnt;
		if(use[use[u].ch[1]].l == 0) {
			use[use[u].ch[1]].l = mid + 1;
			use[use[u].ch[1]].r = use[u].r;
		}
		insert_i(use[u].ch[1],L,R);
	}
	else {
		if(R <= mid) {
			if(!use[u].ch[0])
				use[u].ch[0] = ++cnt;
			if(use[use[u].ch[0]].l == 0) {
				use[use[u].ch[0]].l = use[u].l;
				use[use[u].ch[0]].r = mid;
			}
			insert_i(use[u].ch[0],L,R);
		}
		else {
			if(!use[u].ch[1])
				use[u].ch[1] = ++cnt;
			if(!use[u].ch[0])
				use[u].ch[0] = ++cnt;
			if(use[use[u].ch[0]].l == 0) {
				use[use[u].ch[0]].l = use[u].l;
				use[use[u].ch[0]].r = mid;
			}
			if(use[use[u].ch[1]].l == 0) {
				use[use[u].ch[1]].l = mid + 1;
				use[use[u].ch[1]].r = use[u].r;
			}
			insert_i(use[u].ch[0],L,mid);
			insert_i(use[u].ch[1],mid + 1,R);
		}
	}
	use[u].x += R - L + 1;
}
void insert_o (int u,int l,int r) {
	if(l != r) {
		int mid = (l + r) / 2;
		if(c <= mid)
			insert_o(u << 1,l,mid);
		else insert_o(u << 1 | 1,mid + 1,r);	
	}
	if(!t[u])
		t[u] = ++cnt;
	if(use[t[u]].l == 0) {
		use[t[u]].l = 1;
		use[t[u]].r = 50000;
	}
	insert_i(t[u],a,b);
}
int search (int u,int l,int r,int L,int R,int lz) {
	if(l == L && r == R)
		return lz * (r - l + 1) + use[u].x;
	int mid = (l + r) / 2;
	if(L > mid)
		return search(use[u].ch[1],mid + 1,r,L,R,lz + use[u].lazy);
	else {
		if(R <= mid)
			return search(use[u].ch[0],l,mid,L,R,lz + use[u].lazy);
		return search(use[u].ch[0],l,mid,L,mid,lz + use[u].lazy) + search(use[u].ch[1],mid + 1,r,mid + 1,R,lz + use[u].lazy);
	}
}
int find (int u,int l,int r,int rest) {
	if(l == r)
		return l;
	int lc = (u << 1);
	int rc = (u << 1 | 1);
	if((tmp1 = search(t[rc],1,50000,a,b,0) + rest ) < c)
		return find(lc,l,(l + r) / 2,tmp1);
	return find(rc,(l + r) / 2 + 1,r,rest);
}
int main () {
	scanf("%d%d",&n,&m);
	L(i,1,m)
		if((scanf("%d%d%d%d",&op,&a,&b,&c),op) == 1)
			insert_o(1,1,50000);
		else printf("%d\n",find(1,1,50000,0));
}


【LLM数据篇】预训练数据集+指令生成sft数据集 在《Aligning Large Language Models with Human: A Survey》综述中对LLM数据分类为典型的人工标注数据、self-instruct数据集等 优秀的开源sft数据集:alpaca_data、belle、千言数据集、firefly、moss-003-sft-data多轮对话数据集等 文章目录 note 构造指令实例的3种方式 sft:Aligning Large Language Models with Human: A Survey Alpaca 1. self 阅读详情

相关推荐

游戏开发实战:如何用旋转矩阵实现2D角色平滑转向(附Unity代码)

本文深入探讨了在Unity游戏开发中,如何运用旋转矩阵原理实现2D角色的平滑转向。文章从核心理论出发,提供了计算目标旋转、实现平滑插值(Lerp与SmoothDamp)的完整C#代码,并解决了与动画系统、物理引擎协同的常见难题,帮助开发者提升游戏操作手感与视觉流畅度。

weixin_29057237的博客 287

告别手动配置:IntelliJ IDEA + Maven 一键搞定MySQL驱动与JDBC连接

本文详细介绍了如何使用IntelliJ IDEA和Maven实现MySQL驱动与JDBC连接的自动化配置,告别传统手动方式。通过Maven依赖管理、智能SQL编写和数据库工具集成,提升Java开发效率,特别适合需要频繁操作数据库的开发者。

weixin_33747129的博客 437

谷粒商城篇章9 ---- P248-P261/P292-P294 ---- 消息队列【分布式高级篇六】

RabbitMQ消息队列、RabbitMQ延时队列。

weixin_48568302的博客 1550

BZOJ 3110 ZJOI2013 K大数查询 树套树

题目大意: 有n个位置,m个操作,提供下列两种操作: 1.在[x,y]区间内每个位置插入一个z 2.查询[x,y]区间内的第k大 注意是第k大不是第k小 来一段《树套树之歌》吧: 树套树 树套树 树套树套树 树套树树套树套树 树套树套树套树套树 树套树树套树套树 树套树套树套树套树套树 BGM:《邮递马车》 树套树摆在这里 关键是怎么套 我一开始想的是权值线段树在内层 结果外层的话

世界 1995

把群晖NAS变成游戏开发服务器:Perforce与虚幻引擎深度整合的5个关键配置(含.p4ignore模板)

本文详细介绍了如何将群晖NAS配置为游戏开发服务器,重点讲解了Perforce与虚幻引擎的深度整合。通过五个关键配置节点,包括用户权限架构、Workspace策略、资产同步优化、仓库清洁度保障和编辑器深度集成,帮助小型团队打造高效开发环境。文章还提供了实用的.p4ignore模板和优化技巧,显著提升开发效率。

weixin_30430677的博客 318

保姆级教程:从OrthoFinder到CAFE5,手把手搞定基因家族收缩扩张分析(附完整代码与避坑指南)

本文提供从OrthoFinder到CAFE5的基因家族收缩扩张分析全流程教程,涵盖数据预处理、系统发育树准备、CAFE5运行与参数优化等关键步骤。通过详细代码示例和避坑指南,帮助研究者高效完成基因家族进化分析,特别适合生物信息学初学者。

dianshu1593的博客 393

BZOJ 3110: [Zjoi2013]K大数查询 树套树 整体二分

title BZOJ 3110 LUOGU 3332 题意: 有 \(N\) 个位置, \(M\) 个操作。操作有两种,每次操作如果是: 1 a b c:表示在第 \(a\) 个位置到第 \(b\) 个位置,每个位置加上一个数 \(c\) ; 2 a b c:表示询问从第 \(a\) 个位置到第 \(b\) 个位置,第 \(c\) 大的数是多少。 analysis 看到题后就想到...

dilu0653的博客 170

康耐视CogPMAlignTool模板匹配详解

康耐视CogPMAlignTool是一款基于边缘特征的模板匹配工具,适用于工业视觉检测。该工具提供PatMax、PatQuick、PatFlex等不同算法,分别对应高精度、快速匹配和柔性表面等应用场景。关键参数包括特征粒度(粗糙/精细)、边缘阈值、弹性范围等,支持旋转缩放匹配和极性忽略功能。工具操作流程包括图像采集、参数设置、模板训练和运行检测,通过调整查找概数、接收阈值等参数可优化识别效果。配套的卡尺工具(CogCaliperTool)通过一维投影和边缘筛选实现精准定位,适用于高精度尺寸测量场景。

2502_92473474的博客 1318

【BZOJ】【P3110】【ZJOI2013】【K大数查询】【题解】【树套树】

传送门:http://www.lydsy.com:808/JudgeOnline/problem.php?id=3110 xia

退役狗的专栏 836

Android 12.0 以太网和wifi共存的产品wifi优先级设置功能实现

在12.0的系统ROM定制化开发中,在对于一些有线网和wifi共存的产品中,由于某些产品的特殊要求首选使用wifi,而在原生 系统中以太网的优先级高于wifi的,所以就需要从优先级的设置来分析,实现设置优先级的相关功能实现

安卓兼职framework和app工程师的博客 944

04-协议基础03:USB 2.0信号与电气特性

USB 2.0使用两根差分信号线D+/D-进行数据传输,支持低速(1.5Mbps)、全速(12Mbps)和高速(480Mbps)三种速率。USB总线为主从模式,所有事务由Host发起。端电阻值作用HostRpd(D+)15KΩ±5%下拉,默认低电平HostRpd(D-)15KΩ±5%下拉,默认低电平全速设备Rpu(D+)1.5KΩ±5%上拉到3.3V,标识全速低速设备Rpu(D-)1.5KΩ±5%上拉到3.3V,标识低速USB 2.0硬件要点。

内核笔记 105

bzoj 3110: [Zjoi2013]K大数查询(树套树)

树套树: 本质:一棵树的每个节点套着另一棵树 通常时间复杂度:O(nlog²n) 通常空间复杂度:因为树的大小是nlogn,而每个节点又有一棵nlogn的树,所以最大空间复杂度为O(n²log²) 但事实上,若是动态申请,对于一般题目来讲,是不会占用这么多空间的,例如题目有m次更新,显然每次更新最多只用新建log²n个节点,空间复杂度O(mlog²n) 一般来讲第一层都是线段树

加载中... 729

华为OD机试真题2025双机位C卷 C++ 实现【卡牌游戏】

小明正在尝试一种新的牌游戏。游戏规则只如下:首先,小明拿到一张写有数字m的牌。 然后,他会拿到另外n张牌,上面分别写有不同的数字,牌排成一排。小明的目标是从这排牌中找到一串连续的牌,这些牌上数字的总和可以被 m整除。你的任务是判断小明是否可以完成这个目标。

MISAYAONE的博客 282

【BZOJ3110】【Zjoi2013】K大数查询 树套树 权值线段树套区间线段树

题解: 外层权值线段树,内层区间线段树可解。 权值都是1~n,就不用离散化了。 我写了标记永久化。 其它心得神马的: 天生对树形数据结构无爱。 第一次写树套树,终于知道是怎么回事了。 (只针对本题) 就是外层每个点都表示了一段权值, 而它同时还是一颗线段树, 线段树里面记录了这段权值的出现区间、次数等等。 然后每次插入的时候 都是暴力地把该权值所在的

辗转山河弋流歌 2817

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

【BZOJ3110】[Zjoi2013]K大数查询 树套树

【BZOJ3110】[Zjoi2013]K大数查询 Description 有N个位置,M个操作。操作有两种,每次操作如果是1 a b c的形式表示在第a个位置到第b个位置,每个位置加入一个数c,如果是2 a b c形式,表示询问从第a个位置到第b个位置,第C大的数是多少。 Input 第一行N,M接下来M行,每行形如1 a b c或2 a b c Output ...

weixin_30329623的博客 78

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

bzoj3110[Zjoi2013]K大数查询 树套树

3110: [Zjoi2013]K大数查询Time Limit: 20 Sec Memory Limit: 512 MBSubmit: 9905 Solved: 2945[Submit][Status][Discuss] Description 有N个位置,M个操作。操作有两种,每次操作如果是1 a b c的形式表示在第a个位置到第b个位置,每个位置加入一个数c如果是2 a b c形式,表示询...

weixin_30838873的博客 117

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

bzoj3110[ZJOI2013]K大数查询 树套树

题目描述有N个位置,M个操作。操作有两种,每次操作如果是1 a b c的形式表示在第a个位置到第b个位置,每个位置加入一个数c如果是2 a b c形式,表示询问从第a个位置到第b个位置,第C大的数是多少。输入输出格式输入格式: 第一行N,M接下来M行,每行形如1 a b c或2 a b c输出格式: 输出每个询问的结果 输入输出样例输入样例#1: 2 5 1 1 2 1 1 1 2 2

Plume 羽 <。) 660

[BZOJ 3110] [Zjoi2013] K大数查询 【树套树】

题目链接: BZOJ - 3110 题目分析 这道题是一道树套树的典型题目,我们使用线段树套线段树,一层是区间线段树,一层是权值线段树。一般的思路是外层用区间线段树,内层用权值线段树,但是这样貌似会很难写。多数题解都使用了外层权值线段树,内层区间线段树,于是我就这样写了。每次插入会在 logn 棵线段树中一共建 log^2(n) 个结点,所以空间应该开到 O(nlog^2(n)) 。由于...

weixin_30387799的博客 86

BZOJ 3110: [Zjoi2013]K大数查询 [树套树]

3110: [Zjoi2013]K大数查询 Time Limit: 20 Sec  Memory Limit: 512 MBSubmit: 6050  Solved: 2007[Submit][Status][Discuss] Description 有N个位置,M个操作。操作有两种,每次操作如果是1 a b c的形式表示在第a个位置到第b个位置,每个位置加入一个数c如果是2 a b...

weixin_34384557的博客 108

[BZOJ3110][Zjoi2013]-K大数查询-树套树

说在前面 第一次写树套树,从上午9点写到下午三点半,先是自己没想清楚,yy了个时间复杂度起飞的套法。然后换了一种套法继续写,然而又被人造数据强行卡int= =# 题目 BZOJ3110传送门 洛谷P3332传送门 题目描述 有N个位置,M个操作。操作有两种,每次操作如果是1 a b c的形式表示在第a个位置到第b个位置,每个位置加入一个数c 如果是2 a b c形式,表示

泉華子的OI足迹 487

bzoj 3110: [Zjoi2013]K大数查询(树套树,整体二分)

3110: [Zjoi2013]K大数查询 Time Limit: 20 Sec  Memory Limit: 512 MB Submit: 4020  Solved: 1547 [Submit][Status][Discuss] Description 有N个位置,M个操作。操作有两种,每次操作如果是1 a b c的形式表示在第a个位置到第b个位置,每个位置加入一个数c 如果是2

clover_hxy的博客 1098

树套树专题——bzoj 3110: [Zjoi2013] K大数查询 & 3236 [Ahoi2013] 作业 题解

【原题1】 3110: [Zjoi2013]K大数查询 Time Limit: 20 Sec  Memory Limit: 512 MB Submit: 978  Solved: 476 Description 有N个位置,M个操作。操作有两种,每次操作如果是1 a b c的形式表示在第a个位置到第b个位置,每个位置加入一个数c 如果是2 a b c形式,表示询问从第a个位

阿蒋的专栏 5658

BZOJ 3110 [Zjoi2013]K大数查询 ——树套树

【题目分析】 外层区间线段树,内层是动态开点的权值线段树。 SY神犇说树套树注重的是内外层的数据结构的选择问题,果然很重要啊。 动态开点的实现方法很好。 【代码】 #include <cstdio> #include <cstring> #include <cstdlib> #include <cmath>...

weixin_34176694的博客 156

[BZOJ3110][ZJOI2013]K大数查询 树套树/CDQ分治

树套树做法: 注意到权值很小,于是外层开权值线段树,内层是一个动态开点的区间线段树,维护权值在[L,R],位置在[l,r]的数一共有多少个。 修改就是内层的一个线段树上区间加一。 查询时,外层线段树中先判断左子树中够不够k个数,若够则往左子树递归,不够就减一下后往右子树。 代码(MLE):#include<iostream> #include<cstdio> using namespace

DOFYPXY的博客 406

树套树专题——bzoj 3110: [Zjoi2013] K大数查询 & 3236 [Ahoi2013] 作业 题解

【原题1】 3110: [Zjoi2013]K大数查询 Time Limit: 20 Sec  Memory Limit: 512 MB Submit: 978  Solved: 476 Description 有N个位置,M个操作。操作有两种,每次操作假设是1 a b c的形式表示在第a个位置到第b个位置,每一个位置增加一个数c 假设是2 a b c形式,表示询问...

weixin_33744854的博客 144
上一篇: poj2584——T-Shirt Gumbo
下一篇: codevs2930填报志愿
SAuppp
博客等级 码龄12年 5粉丝 97原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值