由于技术原因,题目我贴不上了,大家点下面的链接自己去看吧^_^

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 数列找不同的更多相关文章

  1. 【题解】Luogu P3901 数列找不同

    我博客中对莫队的详细介绍 原题传送门 不错的莫队练手题 块数就直接取sqrt(n) 对所有询问进行排序 排序第一关键词:l所在第几块,第二关键词:r的位置 考虑Ai不大,暴力开数组 add时如果加之后 ...

  2. 【luogu P3901 数列找不同】 题解

    对于区间查询的问题,提供一种思路: 莫队. 莫队是处理区间问题的乱搞神器,尤其是对于离线查询问题,当然也可以做在线查询,比如带修莫队. 对于有的题,莫队是乱搞骗分,而在某些地方,莫队是正解. 这道题来 ...

  3. P3901 数列找不同

    P3901 数列找不同 题目描述 现有数列 \(A_1,A_2,\cdots,A_N\) ,Q 个询问 \((L_i,R_i)\) , \(A_{Li} ,A_{Li+1},\cdots,A_{Ri} ...

  4. 洛谷 P3901 数列找不同(莫队)

    题目链接:https://www.luogu.com.cn/problem/P3901 这道题简单莫队模板题,然后$add$和$del$分别处理$vis[]$从$0-->1$和从$1--> ...

  5. 【刷题】洛谷 P3901 数列找不同

    题目描述 现有数列 \(A_1,A_2,\cdots,A_N\) ,Q 个询问 \((L_i,R_i)\) , \(A_{Li} ,A_{Li+1},\cdots,A_{Ri}\) 是否互不相同 输入 ...

  6. 洛谷P3901 数列找不同 [莫队]

    题目传送门 题目描述 现有数列 A_1,A_2,\cdots,A_NA1​,A2​,⋯,AN​ ,Q 个询问 (L_i,R_i)(Li​,Ri​) , A_{Li} ,A_{Li+1},\cdots, ...

  7. 洛谷P3901 数列找不同(莫队)

    传送门 我不管我不管我就是要用莫队 直接用莫队裸上 //minamoto #include<iostream> #include<cstdio> #include<alg ...

  8. 洛谷P3901 数列找不同(莫队水题)

    重温下手感,判断区间是否全是不同的数字有两种做法,一个长度为len的区间不同的数字,参见HH的项链,一种是区间众数,参见蒲公英,是水题没错了.明天搞数据库,然后继续自己的gre和训练计划 #inclu ...

  9. luogu 1327 数列排序 & 2017 ACM-ICPC 亚洲区(南宁赛区)网络赛 J题 循环节

    luogu 1327 数列排序 题意 给定一个数列\(\{an\}\),这个数列满足\(ai≠aj(i≠j)\),现在要求你把这个数列从小到大排序,每次允许你交换其中任意一对数,请问最少需要几次交换? ...

随机推荐

  1. VFL语言简洁

    一.VFL语言简洁 VFL(Visual format language)语言是苹果为了简化手写Autolayout代码所创建的专门负责编写约束的代码.为我们简化了许多代码量. 二.使用步骤 使用步骤 ...

  2. ios 使用第三方框架注意

    在ios中使用第三方类库        在项目开发中经常会用到一些第三方类库,通常有两种方法来做到:一种方法是直接把所有的.h和.m文件复制到项目中:另一种方法是把.xcodeproj拖到项目中生成静 ...

  3. 第一章 Java Collections Framework总览

    1.Java容器 Java容器中只能存放对象,对于基本数据类型(byte,short,char,int,long,float,double,boolean),需要包装成对象类型(Byte,Short, ...

  4. 批量将网页转换成图片或PDF文档技巧分享

    工作中我们有时要将一些批量的网页转换成图片或者PDF文档格式,尽管多数浏览器具有滚动截屏或者打印输出PDF文档功能.可是假设有几十上百张网页须要处理,那也是要人命的.所以我一直想找一款可以批量处理该工 ...

  5. Recommendation system

    Dear Prof.Choi: My research interest is mainly the application and optimization of big data and arti ...

  6. 51nod 1353 树

    树背包 设f[i][j]表示第i个点,和子节点组成的联通块大小为j,其他都可行的方案 j=0表示可行的总方案 #include<cstdio> #include<iostream&g ...

  7. imagebutton 设置了src属性的图片更换

    <ImageButton android:id="@+id/mediacontroller_play_pause" android:layout_width="wr ...

  8. JSP-Runoob:JSP 状态码

    ylbtech-JSP-Runoob:JSP 状态码 1.返回顶部 1. SP HTTP 状态码 HTTP请求与HTTP响应的格式相近,都有着如下结构: 以状态行+CRLF(回车换行)开始 零行或多行 ...

  9. CF1073C Vasya and Robot

    CF题目难度普遍偏高啊-- 一个乱搞的做法.因为代价为最大下标减去最小的下标,那么可以看做一个区间的修改.我们枚举选取的区间的右端点,不难发现满足条件的左端点必然是不降的.那么用一个指针移一下就好了 ...

  10. Gym - 100920H 2010-2011 OpenCup IX Onsite, II Yandex Summer School H.Squares 暴力

    题面 题意:有10w个点,问你选4个点,能组成平行于坐标轴的正方形有多少个 题解:不知道正解,我的做法就是暴力的基础上优化一点,每次按x排好序,每次枚举的2个点都是x相同的 这样算是个优化?但并不能过 ...