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

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. Python图像处理库:PIL中Image,ImageDraw等基本模块介绍

    Python图像处理库:PIL中Image,ImageDraw等基本模块介绍 标签: 图像处理PILPYTHON 2016-08-19 10:58 461人阅读 评论(0) 收藏 举报  分类: 其他 ...

  2. javax.xml.transform.TransformerConfigurationException: Could not compile stylesheet

    今天在调代码的时候遇到了一个异常: javax.xml.transform.TransformerConfigurationException: Could not compile styleshee ...

  3. HDU 5862Counting Intersections

    Counting Intersections Time Limit: 12000/6000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/ ...

  4. Codeforces Beta Round #67 (Div. 2)C. Modified GCD

    C. Modified GCD time limit per test 2 seconds memory limit per test 256 megabytes input standard inp ...

  5. adb 命令模拟按键事件 【转】

    本文转载自:http://blog.sina.com.cn/s/blog_68f262210102vc1b.html 转自:http://blog.csdn.net/jlminghui/article ...

  6. MySQL max_connections 总是 214 。不能设大了? max_connections = 214

    MySQL max_connections 总是 214 .不能设大了? centos7 mariadb 修改 max_connections 总是214 It was indeed limits s ...

  7. 支持HTTP2的cURL——基于Alpine的最小化Docker镜像

    cURL是我喜欢的开源软件之一.虽然cURL的强大常常被认为是理所当然的,但我真心地认为它值得感谢和尊重.如果我们的工具箱失去了curl,那些需要和网络重度交互的人(我们大多数人都是这样的)将会陷入到 ...

  8. [转载]马士兵Java视频教程 —— 学习顺序

    书(Java核心编程)+视频..这样学感觉比较好.. 原文地址:马士兵Java视频教程 —— 学习顺序作者:习惯 第一部分:J2se学习视频内容包括: 尚学堂科技_马士兵_JAVA视频教程_JDK5. ...

  9. Akka源码分析-官方文档说明

    如果有小伙伴在看官方文档的时候,发现有些自相矛盾的地方,不要怀疑,可能是官方文档写错了或写的不清楚,毕竟它只能是把大部分情况描述清楚.开源代码一直在更新,官方文档有没有更新就不知道了,特别是那些官方不 ...

  10. 设计模式 | 适配器模式(adapter)

    定义: 将一个类的接口转换成客户希望的另外一个接口.Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作.   书中说到Gof的设计模式中,讲了两种类型的适配器模式: 1.类适配 ...