+-1 RMQ

2023-11-15

考虑分块

b = log ⁡ 2 n 2 b=\frac{\log_2 n}2 b=2log2n,按 b b b 分块

使用ST表处理大块间的 RMQ 问题

对于一个块内的 RMQ 问题,由于差分数组 2 b − 1 2^{b−1} 2b1 种,可以预处理出所有情况下的最值位置

void pre_ST() {
	int i, j, k, l; 
	b=(int)(ceil(log2(top)/2)); c=top/b; 
	Log2[1]=0; 
	for(i=2; i<=top; ++i) Log2[i]=Log2[i>>1]+1; 
	for(i=0; i<c; ++i) {
		Mn[i][0]=T[a[i*b]]; 
		for(j=1; j<b; ++j) 
			Mn[i][0]=max(Mn[i][0], T[a[i*b+j]]); 
	}
	for(k=l=1; l<c; ++k, l<<=1)
		for(i=0, j=l; i+(l<<1)-1<top; ++i, ++j) {
			Mn[i][k]=max(Mn[i][k-1], Mn[j][k-1]); 
		}
}

void pre_small() {
	int i, j, s; 
	for(i=0; i<=c; ++i) {
		for(j=1; j<b && i*b+j<top; ++j)
			if(T[a[i*b+j]].dep<T[a[i*b+j-1]].dep)
				Dif[i]|=(1<<j-1); 
	}
	for(s=0; s<(1<<b-1); ++s) {
		int v=0, mx=0; Pos[s]=0; 
		for(i=1; i<b; ++i) {
			if(s&(1<<i-1)) --v; 
			else ++v; 
			if(v<mx) {
				mx=v; Pos[s]=i; 
			}
		}	
	}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

+-1 RMQ 的相关文章

随机推荐

  • web项目怎么放到云服务器上,web项目怎么放到云服务器上

    web项目怎么放到云服务器上 内容精选 换一换 伸缩组是具有相同属性和应用场景的云服务器和伸缩策略的集合 是启停伸缩策略和进行伸缩活动的基本单位 您可以使用伸缩策略设定的条件自动增加 减少伸缩组中的实例数量 或维持伸缩组中固定的实例数量 创
  • 用MySQL语法建 一个学生表,包括学生姓名、性别、年龄、班级信息。

    1 创建表的SQL语句 create table student ID int primary key not null NAME varchar 50 sex int age int classNO in 转载于 https www cn
  • SqlServer Management Studio启用身份验证登录

    背景 一开始安装好SqlServer Management Studio时 默认只能用本地window身份验证登录 也就是除了SqlServer的电脑 别的都访问不了这个数据库 这是很不方便的 方案 1 打开SqlServer Manage
  • ubuntu安装无线网卡驱动

    摘要 在笔记本上安装ubuntu系统 安装好后是可以连接wifi的 而台式机安装ubuntu的话 特别是组装的台式机 是无法立即连wifi的 是需要安装无线网卡驱动的 如果你身边无法连网线 而又无法连接wifi 根本无法更新或者下载 所以
  • https证书申请 nginx ssl配置

    打算开发api要弄一个https的域名 于是我就搞了一个把过程记录下来 留给有用的人 分割线 我用的是阿里云的证书 现在有一个免费的不知道以后会不会一直有 就在阿里云服务里CA证书服务就可以找到 购买的时候选择自动生成证书 这样就不用自己制
  • ionic5/angular11通过修改ShadowRoot样式更改ionic UI组件原样式

    通过浏览器调试可以找到需要更改的UI组件样式 找到其CSS class类名后 通过CSS无法直接修改样式 需要使用shadowRoot appendChild 方法注入新的样式覆盖原来的样式达到修改原样式的目的 一 编写HTML
  • 农行网银登录无法显示该网页_Edge Dev新版发布:支持网页预加载以更快搜索和浏览...

    今天早些时候 微软宣布了 Edge Dev 通道的最新 85 0 531 1 版本 本次版本更新支持某些网页的预加载 可以更快地搜索和浏览 该版本中还包含了一些BUG修复和改进 下载地址 https www microsoftedgeins
  • C#DataTable转List互转

    using System using System Collections Generic using System Data using System Reflection namespace BT Preservation Models
  • 疫情期间沙雕文案

    1 希望如约而至的不至是春天 还有疫情过后平安的你 2 早知道半个月前是最后一次出门 就不应该喝一杯奶茶 3 刚刚有人约我出去过情人节 我果断拉黑删除了 非常时期骗我感情可以 但要我名不可以 4 烟花三月下扬州 愿我三月能下楼 5 疫情你走
  • postman进行post、get参数传递及中文乱码和各类型参数传递和json格式传参和日期型参数传递和响应数据传回

    postman是一种测试工具 用postman直接在其上输入参数名和参数值就行 不用区分post和get请求方法 当然java代码要改变一点 在响应注解的方法里面添加和postman中输入的参数名一样的形参 get请求 代码 注意在响应注解
  • Android 9 底部导航栏样式不正确

    1 项目预制了GMS后 底部导航栏只剩下一个返回键和唤醒Assistant的按钮 需要回到原来的导航栏来 修改方式屏蔽掉 config defaultAssistantAccessPackage 使用Android原始的config def
  • 原码、补码、反码的关系及应用场景

    是三种表示有符号整数的方法 它们之间存在一定的关系 概念 原码是最基本的表示方法 即将一个数的符号位和数值位分开表示 符号位用0表示正数 用1表示负数 例如 7的原码为00000111 7的原码为10000111 反码是在原码的基础上 将负
  • 局域网、城域网、广域网、国际互联网(internet)

    计算机网络按覆盖范围分类可分为局域网 城域网 广域网 一 局域网 1 地理分布范较小 一般为数百米至数公里 可覆盖一幢大楼 一所校园或一个企业 一个家庭 2 数据传输速率高 一般为100Mbps 目前已出现速率高达1000Mbps的局域网
  • vue3 element-plus el-form的二次封装

    form表单的二次封装 vue3 element plus el form的二次封装 属性说明 属性名 类型 默认值 说明 data Array 页面展示数据内容 onChange Function false 表单事件 bindProps
  • R语言的科学编程与仿真 chapter 4 答案

    chapter 4 Ex1 programe cha4 6 ex1 Ex1 https img blog csdn net 20151226125117523 12 25 15 author Sigua file path file age
  • java 加载oracle 驱动 19c_037、Java--JDBC技术

    1 JDBC 简介 JDBC Java DataBase Connectivity java 数据库连接 是 JavaEE 平台下的技术规范 定义了在 Java 语言中连接数据 执行 SQL 语句的标准 可以为多种关系数据库提供统一访问 数
  • https认证过程(TLS认证过程)

    最近在准备春招 刚好看到https 网上搜了一圈没看到满意的 于是打算自己整理一下 以下内容来源于 计算机网络 第8版 谢希仁 加上了一些自己的拙见 目前的HTTPS是使用http tls的 所以直接了解tls的认证过程即可 曾经广泛使用的
  • SAP接口 财务凭证集成_差旅费报销

    OA系统调用此接口 传输差旅费报销流程的凭证信息到SAP 生成借款类型SAP凭证 调用标准的BABI方法实现 1 首先先介绍一下实现会计凭证生成的BAPI 参考链接 2 增强操作在另一篇文章 SAP接口 财务凭证集成 借款 在此不再赘述 3
  • 最近研究xcodebuild批量打包的一些心得

    转自Rainbird的个人博客 以前的时候只知道做安卓开发的兄弟挺辛苦的 不但开发的时候要适配一堆的机型 好不容易开发完了还要打一堆不同的包给不同的市场 没想到现在这些市场都开辟iOS市场 于是需要打一堆的包给不同的市场 面对暂时给的十二个
  • +-1 RMQ

    考虑分块 令 b log 2 n