首页 > 其他分享 >CF522D Closest Equals 离线扫描 + 线段树

CF522D Closest Equals 离线扫描 + 线段树

时间:2024-02-03 19:22:18浏览次数:28  
标签:Closest int rep 离线 Equals lst ans id

CF522D Closest Equals

题意:m 个询问,求 [l,r] 内相同元素的最小距离。
离线询问,按右端点排序。
对于每一个 a[i],如果 last[a[i]] 存在,将线段树 last[a[i]] 的位置改为 i - last[a[i]]。
查询区间最小值。
当然这题也可以回滚莫队。
注:本题一路从黑题堕落到绿题

#include<bits/stdc++.h>
#define rep(i, a, b) for(int i = (a); i <= (b); ++ i)
#define per(i, a, b) for(int i = (a); i >= (b); -- i)
#define pb emplace_back
#define All(X) X.begin(), X.end()
using namespace std;
using ll = long long;
mt19937 rnd(time(0));
constexpr int N = 5e5 + 5, inf = 0x3f3f3f3f; 

int n, m, a[N], b[N], ans[N], lst[N];
vector<pair<int, int>> qr[N];

int t[N << 2];
void modify(int p, int v, int x = 1, int l = 1, int r = n) {
	if(l == r) return t[x] = v, void();
	int mid = l + r >> 1;
	if(p <= mid) modify(p, v, x << 1, l, mid);
	else modify(p, v, x << 1 | 1, mid + 1, r);
	t[x] = min(t[x << 1], t[x << 1 | 1]);
}

int query(int L, int R, int x = 1, int l = 1, int r = n) {
	if(L <= l && r <= R) return t[x];
	int ret = inf;
	int mid = l + r >> 1;
	if(mid >= L) ret = min(ret, query(L, R, x << 1, l, mid));
	if(mid < R) ret = min(ret, query(L, R, x << 1 | 1, mid + 1, r));
	return ret;
}

int main() {
	ios::sync_with_stdio(false), cin.tie(nullptr), cout.tie(nullptr);
	cin >> n >> m;
	rep(i, 1, n) cin >> a[i], b[i] = a[i];
	sort(b + 1, b + n + 1);
	int tot = unique(b + 1, b + n + 1) - b - 1;
	rep(i, 1, n) a[i] = lower_bound(b + 1, b + tot + 1, a[i]) - b;
	rep(i, 1, m) {
		int l, r; cin >> l >> r;
		qr[r].pb(l, i);
	}
	memset(t, 0x3f, sizeof t);
	rep(i, 1, n) {
		if(lst[a[i]]) modify(lst[a[i]], i - lst[a[i]]);
		for(auto [l, id] : qr[i]) {
			ans[id] = query(l, i);
			if(ans[id] == inf) ans[id] = -1;
		}
		lst[a[i]] = i;
	}
	rep(i, 1, m) cout << ans[i] << '\n';
	return 0;
}

标签:Closest,int,rep,离线,Equals,lst,ans,id
From: https://www.cnblogs.com/Luxinze/p/18005077

相关文章

  • 离线解锁 CodeCombat 全关卡教程 使用docker安装实现
    前期准备下载安装dockerdesktophttps://www.123pan.com/s/fmvUVv-HqApH,这个安装不会的随便搜一个教程,挺多的。我随便找了一个知乎的Windows10Docker安装详细教程下载数据dump.tar.gzhttps://www.123pan.com/s/fmvUVv-hqApH开始打开cmd拉镜像dockerpulloper......
  • 通过Windows PE对离线系统提取配置信息
    通过WindowsPE对离线系统提取配置信息,如IP地址等,通常涉及访问和解析离线系统的注册表文件。Windows系统中的网络配置信息,包括IP地址、子网掩码、默认网关和DNS服务器等,主要存储在注册表中。下面是一个基本的步骤指南,展示了如何在WindowsPE环境中提取这些信息:1.启动到WindowsP......
  • Java中比较两个字符串==和.equals()区别
    ​在Java中,==和.equals()都是用于比较两个字符串是否相等的运算符,==比较的是两个字符串的引用地址,而.equals()比较的是两个字符串的内容。只有当两个字符串变量指向同一个字符串对象时,==和.equals()才会返回相同的结果 参考文档:Java中比较两个字符串==和.equals()区......
  • 离线安装dotnet tool
    以安装dotnet-counters为例:使用 https://www.nuget.org/packages/dotnet-counters/找到合适版本点击Downloadpackage 下载离线包建立文件夹cli,把离线包放进去在文件夹外,运行命令  dotnettoolinstall--globaldotnet-counters--add-source cliif还去找http:// 报N......
  • 离线安装docker
    一linux离线安装1.从官方下载Docker安装包并上传至虚拟机https://download.docker.com/linux/static/stable/x86_64/2.解压安装包tarxvfdocker-20.10.0.tgz3.将解压出来的docker文件内容移动到/usr/bin/目录下cpdocker/*/usr/bin/4.将docker注册为service服务......
  • 内网离线部署redis7.2
    环境说明镜像系统:CentOS-7-x86_64-Everything-1908.iso网络:内网地址:192.168.24.20无其他网卡内存:8GBCPU:1颗4核硬盘:64GB安装方式:带GUI的服务器主机名:data0另外,内网环境中有一个harbor服务主机,上面有nfs服务、ntpd服务、harbor镜像仓库,此主机可以连接公网,我使用它来准备必......
  • (转)Java中equals和==、hashcode的区别
    https://www.cnblogs.com/lixuwu/p/5676207.htmlhttps://www.cnblogs.com/lixuwu/p/10662234.htmlhttps://timzhouyes.github.io/2020/02/27/Java%E7%89%B9%E7%A7%8D%E5%85%B5/https://blog.csdn.net/a745233700/article/details/83186808https://www.cnblogs.com/dolphin......
  • 离线部署K8s V1.29.1版本
    准备私用的系统ISO镜像为:CentOS-7-x86_64-Everything-1908.iso安装方式为带GUI的服务器架构说明K8s集群规划VIP:192.168.24.2        通过keepalived提供harbor:镜像仓库、nfs、ntp        连接外网;        内网地址:192.168.24.5k8s-master0:......
  • notepad++离线安装插件
    背景有一些外面的网站无法通过在线的方式直接安装插件,所有就需求从其他的渠道获取插件包,解压后离线安装。举例方法安装nppplugin_svn插件首先先下载插件压缩包nppplugin_svn_x86.zip解压后放到notepad++的插件文件夹中解压的文件夹需要跟dll文件名称一致重启notepad++即可......
  • centos 离线安装tree命令
    在线安装tree命令:yum-yinstalltree 但是在线包总是下载失败:RepositoryepelislistedmorethanonceintheconfigurationRepositoryepel-debuginfoislistedmorethanonceintheconfigurationRepositoryepel-sourceislistedmorethanonceinthecon......