Luogu P3901 数列找不同
由于技术原因,题目我贴不上了,大家点下面的链接自己去看吧^_^
P3901 数列找不同
这题第一眼看去,题面真短,有坑(flag)
在往下面看去,woc数据这么大,你要怎样。
现在一起想想想,超级侦探,立刻出发。
bulabulabula,
串了。
看了看题解,卧槽,还有这种操作,赶紧get
我们在输入的时候做一下预处理,把每一个数前面的有和它重复的数的位置记录一下,然后在找的时候就很简单了。
不要以为这么简单就结束了。hahahha

代码
#include <iostream>
#include <cstdio>
#define MAXN 1000007 using namespace std; int N, Q, a[MAXN], s, t; int lef[MAXN]; int main() {
scanf("%d%d", &N, &Q);
for(int i=1; i<=N; i++) {
scanf("%d", &a[i]);
for(int j=1; j<i; j++) {
if(a[i] == a[j]) {
lef[i] = j;
}
}
}
for(int i=1; i<=Q; i++) {
scanf("%d%d", &s, &t);
bool mark = true;
for(int j=s; j<=t; j++) {
if(lef[j] >= s) {
printf("No\n");
mark = false;
break;
}
}
if(mark == true) {
printf("Yes\n");
}
}
return 0;
}
咦,我怎么才50分。原来死因为我的预处理是接近$O(n^2)$的,那还有什么好办法的吗?
别着急,接着写。
我们定义一个数组$la[j]$值为$j$的数最后的出现位置,这样就不用再循环去找了,就变成$O(n)$的复杂的了。

怎么还是TLE啊喂O—n—O
看看代码
#include <iostream>
#include <cstdio>
#define MAXN 1000007 using namespace std; int N, Q, a[MAXN], s, t; int lef[MAXN], la[MAXN]; int main() {
scanf("%d%d", &N, &Q);
for(int i=1; i<=N; i++) {
scanf("%d", &a[i]);
lef[i] = la[a[i]];
la[a[i]] = i;
}
for(int i=1; i<=Q; i++) {
scanf("%d%d", &s, &t);
bool mark = true;
for(int j=s; j<=t; j++) {
if(lef[j] >= s) {
printf("No\n");
mark = false;
break;
}
}
if(mark == true) {
printf("Yes\n");
}
}
return 0;
}
靠,是因为查询的时候还是$O(n^2)$的啊。
哎,改改改
我们可以记录一个区间里的最大的la,哈哈哈哈
看下面,终于AC了

代码
#include <iostream>
#include <cstdio>
#define MAXN 1000007 using namespace std; int N, Q, a[MAXN], s, t; int lef[MAXN], la[MAXN], maxla[MAXN]; int main() {
scanf("%d%d", &N, &Q);
for(int i=1; i<=N; i++) {
scanf("%d", &a[i]);
lef[i] = la[a[i]];
la[a[i]] = i;
maxla[i] = max(maxla[i], lef[i]);
maxla[i] = max(maxla[i], maxla[i-1]);
}
for(int i=1; i<=Q; i++) {
scanf("%d%d", &s, &t);
if(maxla[t] < s) printf("Yes\n");
else printf("No\n");
}
return 0;
}
Luogu P3901 数列找不同的更多相关文章
- 【题解】Luogu P3901 数列找不同
我博客中对莫队的详细介绍 原题传送门 不错的莫队练手题 块数就直接取sqrt(n) 对所有询问进行排序 排序第一关键词:l所在第几块,第二关键词:r的位置 考虑Ai不大,暴力开数组 add时如果加之后 ...
- 【luogu P3901 数列找不同】 题解
对于区间查询的问题,提供一种思路: 莫队. 莫队是处理区间问题的乱搞神器,尤其是对于离线查询问题,当然也可以做在线查询,比如带修莫队. 对于有的题,莫队是乱搞骗分,而在某些地方,莫队是正解. 这道题来 ...
- P3901 数列找不同
P3901 数列找不同 题目描述 现有数列 \(A_1,A_2,\cdots,A_N\) ,Q 个询问 \((L_i,R_i)\) , \(A_{Li} ,A_{Li+1},\cdots,A_{Ri} ...
- 洛谷 P3901 数列找不同(莫队)
题目链接:https://www.luogu.com.cn/problem/P3901 这道题简单莫队模板题,然后$add$和$del$分别处理$vis[]$从$0-->1$和从$1--> ...
- 【刷题】洛谷 P3901 数列找不同
题目描述 现有数列 \(A_1,A_2,\cdots,A_N\) ,Q 个询问 \((L_i,R_i)\) , \(A_{Li} ,A_{Li+1},\cdots,A_{Ri}\) 是否互不相同 输入 ...
- 洛谷P3901 数列找不同 [莫队]
题目传送门 题目描述 现有数列 A_1,A_2,\cdots,A_NA1,A2,⋯,AN ,Q 个询问 (L_i,R_i)(Li,Ri) , A_{Li} ,A_{Li+1},\cdots, ...
- 洛谷P3901 数列找不同(莫队)
传送门 我不管我不管我就是要用莫队 直接用莫队裸上 //minamoto #include<iostream> #include<cstdio> #include<alg ...
- 洛谷P3901 数列找不同(莫队水题)
重温下手感,判断区间是否全是不同的数字有两种做法,一个长度为len的区间不同的数字,参见HH的项链,一种是区间众数,参见蒲公英,是水题没错了.明天搞数据库,然后继续自己的gre和训练计划 #inclu ...
- luogu 1327 数列排序 & 2017 ACM-ICPC 亚洲区(南宁赛区)网络赛 J题 循环节
luogu 1327 数列排序 题意 给定一个数列\(\{an\}\),这个数列满足\(ai≠aj(i≠j)\),现在要求你把这个数列从小到大排序,每次允许你交换其中任意一对数,请问最少需要几次交换? ...
随机推荐
- Android时间轴效果,直接使用在你的项目中
近期开发app搞到历史查询,受腾讯qq的启示,搞一个具有时间轴效果的ui,看上去还能够,然后立即想到分享给小伙伴,,大家一起来看看,先上效果图吧 watermark/2/text/aHR0cDovL2 ...
- 微信前端js sdk以外的开发
此时页面中就会出现刚才我画红圈部分的工具条. 这个工具条再加上上面的标题栏工具条. 极大的降低了可视区域的面积. 是否能将它去掉呢?答案是能够的.增加以下代码就能够去掉微信中以下的工具条: docum ...
- 利用jQuery Ajax技术实现每隔5秒向某页面传值
有时候我们须要每隔一段时间向某页面传值,比方说聊天室,每隔几秒就像数据库处理页面传值并取回,然后显示在聊天窗体.又或者是每隔一段时间就查询用户最后发言时间到如今是否间隔2分钟.假设是则将用户退出. 这 ...
- Cocos2d-x3.3RC0载入Android的WebView
代码部分摘自http://www.fusijie.com/blog/2013/12/26/play-cocos2dx-33/ Cocos2d-x3.3RC0通过Jni嵌入Android的WebView ...
- QMap QHash的选择(QString这种复杂的比较,哈希算法比map快很多)
QMap QHash有近乎相同的功能.很多资料里面介绍过他们之间的区别了.但是都没有说明在使用中如何选择他们. 实际上他们除了存储顺序的差别外,只有key操作的区别. 哈希算法是将包含较多信息的“ke ...
- Android CountDownTimer的使用
官方提供的用法如下: new CountDownTimer(30000, 1000) { public void onTick(long millisUntilFinished) { mTextFie ...
- 将canvas画布内容转化为图片(toDataURL(),创建url)
将canvas画布内容转化为图片(toDataURL(),创建url) 总结 1.现在的浏览器都支持右键另存为图片的方法来将canvas画布内容转化为图片 2.在代码里面可以通过toDataURL() ...
- electron利用nodejs+移动端技术跨平台桌面应用开发框架——记录下,类似node webkit!
Build cross platform desktop appswith JavaScript, HTML, and CSS Electron: 1.6.8Node: 7.4.0Chromium: ...
- 码位(code position/point)Unicode 编码与 Python 2/3 编码兼容性问题
Unicode HOWTO 0. 码位(code position/point) 一个码位由某个数值表示,全部码位共同构成其码值空间(code space). ASCII,0~7Fhex(128) 拓 ...
- $P5017 摆渡车$
problem 毒瘤\(DP\) #ifdef Dubug #endif #include <bits/stdc++.h> using namespace std; typedef lon ...