【LOJ10121】与众不同

题面

LOJ

题解

这题是_\(tham\)给\(ztl\)他们做的,然而这道题™居然还想了蛮久。。。

首先可以尺取出一个位置\(i\)上一个合法的最远位置\(pre_i\)

而对于一个询问\((l,r)\),因为\(pre_i\)是单调的

所以可以二分出\(pre_i\geq l\)的第一个位置\(mid\)

用\(st\)表维护一下区间\(i-pre_i+1\)最大值\(qmax\)

则\(ans=max(mid-l,qmax(mid,r))\)

注意判断一下边界情况

代码

#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <algorithm>
using namespace std;
inline int gi() {
register int data = 0, w = 1;
register char ch = 0;
while (!isdigit(ch) && ch != '-') ch = getchar();
if (ch == '-') w = -1, ch = getchar();
while (isdigit(ch)) data = 10 * data + ch - '0', ch = getchar();
return w * data;
}
const int MAX_N = 200005;
const int MAX_LOG_N = 19;
const int MAX_V = 1e6;
int bln[MAX_V << 1 | 1];
int N, M, a[MAX_N], pre[MAX_N];
int st[MAX_N][MAX_LOG_N], lg2[MAX_N];
void Prepare() {
int l = 1, r = 0;
do {
bln[a[++r]]++;
while (bln[a[r]] > 1) --bln[a[l++]];
pre[r] = l;
} while (l <= N && r <= N && l <= r);
for (int i = 1; i <= N; i++) st[i][0] = i - pre[i] + 1;
for (int j = 1; j <= 18; j++)
for (int i = 1; i + (1 << j) - 1 <= N; i++)
st[i][j] = max(st[i][j - 1], st[i + (1 << (j - 1))][j - 1]);
for (int i = 2; i <= MAX_N; i++) lg2[i] = lg2[i >> 1] + 1;
}
int qmax(int l, int r) {
int t = lg2[r - l + 1];
return max(st[l][t], st[r - (1 << t) + 1][t]);
}
int solve(int ql, int qr) {
if (qmax(qr, qr) >= qr - ql + 1) return qr - ql + 1;
int l = ql, r = qr, res = qr;
while (l <= r) {
int mid = (l + r) >> 1;
if (ql <= pre[mid]) res = mid, r = mid - 1;
else l = mid + 1;
}
return max(res - ql, qmax(res, qr));
}
int main () {
N = gi(), M = gi();
for (int i = 1; i <= N; i++) a[i] = gi() + MAX_V;
Prepare();
while (M--) {
int l = gi() + 1, r = gi() + 1;
printf("%d\n", solve(l, r));
}
return 0;
}

【LOJ10121】与众不同的更多相关文章

  1. [LOJ10121] 与众不同

    题目类型:\(DP\)+\(RMQ\) 传送门:>Here< 题意:给定一个长度为\(N\)的序列,并给出\(M\)次询问.询问区间\([L,R]\)内的最长完美序列.所谓完美序列就是指连 ...

  2. .NET程序员细数Oracle与众不同的那些奇葩点

    扯淡 距上次接触 Oracle 数据库已经是 N 年前的事了,Oracle 的工作方式以及某些点很特别,那会就感觉,这货就是一个奇葩!最近重拾记忆,一直在折腾 Oracle,因为 Oracle 与众不 ...

  3. InstantClick – 快速响应!让你的网站与众不同

    尽管网络带宽不断增加,但网站并没有更快很多.这是因为最大的瓶颈在于页面加载的延迟.InstantClick 是一个很小的 JavaScript 库,大大加速你的网站响应速度. 在访问者点击一个链接之前 ...

  4. 经典网页设计:20个与众不同的国外 HTML5 网站

    大家都都知道, HTML5 具备所有最新的技术和功能,帮助我们创造平滑过渡,花式图像滑块和动画.如果你正在考虑使用HTML5 来设计自己的网站,那么这个集合能够帮助你. 在过去的10年里,网页设计师使 ...

  5. 与众不同 windows phone 8.0 & 8.1 系列文章索引

    [源码下载] [与众不同 windows phone 7.5 (sdk 7.1) 系列文章索引] 与众不同 windows phone 8.0 & 8.1 系列文章索引 作者:webabcd ...

  6. 与众不同 windows phone (34) - 8.0 新的控件: LongListSelector

    [源码下载] 与众不同 windows phone (34) - 8.0 新的控件: LongListSelector 作者:webabcd 介绍与众不同 windows phone 8.0 之 新的 ...

  7. 与众不同 windows phone (35) - 8.0 新的启动器: ShareMediaTask, SaveAppointmentTask, MapsTask, MapsDirectionsTask, MapDownloaderTask

    [源码下载] 与众不同 windows phone (35) - 8.0 新的启动器: ShareMediaTask, SaveAppointmentTask, MapsTask, MapsDirec ...

  8. 与众不同 windows phone (36) - 8.0 新的瓷贴: FlipTile, CycleTile, IconicTile

    [源码下载] 与众不同 windows phone (36) - 8.0 新的瓷贴: FlipTile, CycleTile, IconicTile 作者:webabcd 介绍与众不同 windows ...

  9. 与众不同 windows phone (37) - 8.0 文件系统: StorageFolder, StorageFile, 通过 Uri 引用文件, 获取 SD 卡中的文件

    [源码下载] 与众不同 windows phone (37) - 8.0 文件系统: StorageFolder, StorageFile, 通过 Uri 引用文件, 获取 SD 卡中的文件 作者:w ...

随机推荐

  1. leetcode shell

    leetcode 195. 第十行 # | | 第一种是先取出前10行,然后取出最后一行.(但是不足10行,也可以取出最后一行) 正解: tail -n +K :从第K行取出所有 然后取出第一行 le ...

  2. [HNOI2003]多边形

    嘟嘟嘟 也是一道半平面相交板子题. 比较好的处理方法是先把原图形全部加入答案,然后在一条边一条边切. 然而第一个点全网(当然包括我)都没过,我最后也只能固输了-- #include<cstdio ...

  3. Odoo日历视图

    转载请注明原文地址:https://www.cnblogs.com/cnodoo/p/9280604.html 一:日历视图定义 根元素为<calendar>. 主要的属性有:    co ...

  4. windows安装PHP IIS MYSQL

    https://www.cnblogs.com/huodong/p/4310425.html

  5. week9:Recommender Systems

    Collaborative  filtering 的原理不是很理解? xi   是每一步电影的特征向量,表示浪漫/动作

  6. Java利用 ganymed-ssh2-build.jar来上传文件到linux以及下载linux文件以及执行linux shell命令

    package api; import java.io.BufferedReader;import java.io.InputStreamReader;import java.io.IOExcepti ...

  7. Notepad++格式化JSON字符串

    窗口 -> 插件 -> Plugin Manager -> Show Plugin Manager,在弹出层中找到"JSON Viewer"选项,将踏勾选上,然后 ...

  8. 黑少微服务商店之Iron Cloud微服务开发云

    近日,由黑少微服务研发团队推出的Iron Cloud微服务开发云已经正式对外提供服务,这是国内第一家基于云端操作的微服务专业开发工具. Iron Cloud 微服务开发云(www.ironz.com) ...

  9. iOS双滑块选择器

    iOS双滑块选择器 <SDRangeSliderView> https://github.com/qddnovo/SDRangeSliderView 实现了通用性和便利性 今天是个好日子

  10. 1005. Spell It Right(20)—PAT 甲级

    Given a non-negative integer N, your task is to compute the sum of all the digits of N, and output e ...