CF1927D 题解
做法,不用任何 ds ,简单易懂。
题意简述
多组数据。
每组数据给你一个长度为 的序列 , 次询问,每次询问有 ,问你在 的 区间内存不存在两个不一样的数,如果有,输出他们两个的下标,没有输出 -1
。
数据范围: 。
解法
对于每个数 ,记录它往左第一个不一样的数的下标,记为 ,则有:
如果 ,则 。
如果 ,则 。
式子很好想到,不多做赘述。
所以,对于每个询问 ,如果 ,就说明在这个区间内没有数不一样,直接输出 -1
,反之,输出 和 即可。
每组数据预处理 ,查询 。
代码
#include <bits/stdc++.h>
using namespace std;
const int N=2e5+10,M=2e6+10;
int n,a[N];
int q;
int lst[N];
signed main(){
ios::sync_with_stdio(false);
cin.tie(0),cout.tie(0);
int t;
cin>>t;
while(t--){
cin>>n;
for(int i=1;i<=n;i++)cin>>a[i];
for(int i=1;i<=n;i++){
if(a[i]!=a[i-1]){
lst[i]=i-1;
}else{
lst[i]=lst[i-1];
}
}
cin>>q;
while(q--){
int l,r;
cin>>l>>r;
if(lst[r]<l)cout<<"-1 -1\n";
else{
cout<<lst[r]<<' '<<r<<'\n';
}
}
cout<<'\n';
}
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】