P3512 [POI2010]PIL-Pilots
我一开始打的O(n^2)(最坏情况)的算法.枚举区间长度。60分

#include<iostream>
#include<cstdio>
#include<queue>
#include<algorithm>
#include<cmath>
#include<ctime>
#include<cstring>
#define len 3000010
#define inf 2147483647
#define For(i,a,b) for(register int i=a;i<=b;i++)
#define p(a) putchar(a)
#define g() getchar()
//by war
//2017.10.9
using namespace std;
int n,c;
int a[len];
int qz[len];
int qj[len];
int lz,rz,lj,rj;
void in(int &x)
{
char c=g();x=;
while(c<''||c>'')c=g();
while(c<=''&&c>='')x=x*+c-'',c=g();
} void o(int x)
{
if(x>)o(x/);
p(x%+'');
}
int main()
{
in(c),in(n);
For(i,,n)
in(a[i]);
for(register int k=n;k>=;k--)
{
lz=,rz=,lj=,rj=;
For(i,,n)
{ while(lj<=rj&&a[qj[rj]]<=a[i])rj--;
qj[++rj]=i;
while(qj[rj]-qj[lj]>=k)lj++; while(lz<=rz&&a[qz[rz]]>=a[i])rz--;
qz[++rz]=i;
while(qz[rz]-qz[lz]>=k)lz++; if(i>=k)
{
if(a[qj[lj]]-a[qz[lz]]<=c)
{
o(k);
exit();
}
}
}
}
return ;
}

正解不用枚举区间长度,动态维护+更新答案,O(n).

#include<iostream>
#include<cstdio>
#include<queue>
#include<algorithm>
#include<cmath>
#include<ctime>
#include<cstring>
#define len 3000010
#define inf 2147483647
#define For(i,a,b) for(register int i=a;i<=b;i++)
#define p(a) putchar(a)
#define g() getchar()
//by war
//2017.10.9
using namespace std;
int n,c;
int a[len];
int qz[len];
int qj[len];
int lz,rz,lj,rj;
int ans,last;
void in(int &x)
{
char c=g();x=;
while(c<''||c>'')c=g();
while(c<=''&&c>='')x=x*+c-'',c=g();
} void o(int x)
{
if(x>)o(x/);
p(x%+'');
}
int main()
{
in(c),in(n);
For(i,,n)
in(a[i]);
lz=,rz=,lj=,rj=;
For(i,,n)
{ while(lj<=rj&&a[qj[rj]]<=a[i])rj--;
while(lz<=rz&&a[qz[rz]]>=a[i])rz--;
qj[++rj]=i;qz[++rz]=i;
while(a[qj[lj]]-a[qz[lz]]>c)
if(qj[lj]<qz[lz])
last=qj[lj],lj++;
else
last=qz[lz],lz++;
ans=max(ans,i-last);
}
o(ans);
return ;
}

P3512 [POI2010]PIL-Pilots的更多相关文章

  1. P3512 [POI2010]PIL-Pilots-洛谷luogu

    刚研究完单调队列和单调栈 于是就找题做了 发现了这道蓝题 以为很简单 就着手来写了 然而 并不是我想的那样 只是有一点点思路 无奈 还是看了题解 好吧题解是真的挺好的 ---------------- ...

  2. luogu P3512 [POI2010]PIL-Pilots

    题目描述 In the Byteotian Training Centre, the pilots prepare for missions requiring extraordinary preci ...

  3. [洛谷P3512 [POI2010]PIL-Pilots]

    题目链接: 传送门走这里 题目分析: 感觉不是很难啊--不像是蓝题(AC量也不像)恶意评分? 少打了一个+1调了半天,就这样居然还能过60pts?我思路和题解第一篇高度重合是什么鬼啊,太过分了吧本来还 ...

  4. BZOJ 2096: [Poi2010]Pilots( set )

    用个set维护就可以水过去...O(NlogN) 应该可以用单调队列O(N).... --------------------------------------------------------- ...

  5. bzoj2096[Poi2010]Pilots 单调队列

    2096: [Poi2010]Pilots Time Limit: 30 Sec  Memory Limit: 162 MBSubmit: 983  Solved: 513[Submit][Statu ...

  6. 【BZOJ2096】[Poi2010]Pilots 双指针+单调队列

    [BZOJ2096][Poi2010]Pilots Description Tz又耍畸形了!!他要当飞行员,他拿到了一个飞行员测试难度序列,他设定了一个难度差的最大值,在序列中他想找到一个最长的子串, ...

  7. BZOJ 2096: [Poi2010]Pilots

    Description 求一个最长的序列,最大值最小值之差不超过 \(k\) . Sol 单调队列. 一个队列直接上就行.. Code /******************************* ...

  8. bzoj2096: [Poi2010]Pilots

    Description Tz又耍畸形了!!他要当飞行员,他拿到了一个飞行员测试难度序列,他设定了一个难度差的最大值,在序列中他想找到一个最长的子串,任意两个难度差不会超过他设定的最大值.耍畸形一个人是 ...

  9. 【刷题】BZOJ 2096 [Poi2010]Pilots

    Description Tz又耍畸形了!!他要当飞行员,他拿到了一个飞行员测试难度序列,他设定了一个难度差的最大值,在序列中他想找到一个最长的子串,任意两个难度差不会超过他设定的最大值.耍畸形一个人是 ...

随机推荐

  1. 【bzoj2669】 cqoi2012—局部极小值

    http://www.lydsy.com/JudgeOnline/problem.php?id=2669 (题目链接) 题意 给出一个$n*m$的整数矩阵,其中$[1,nm]$中的整数每个出现一次,有 ...

  2. (转)flask的context机制

    本文转自:https://blog.tonyseek.com/post/the-context-mechanism-of-flask/ 作者:无知的 TonySeek 注意:本文仅仅作为个人mark, ...

  3. Helm二:安装

    目录 Helm安装 Helm client安装 Helm tiller安装 Chart仓库配置 私有chart仓库 chart仓库的组成 创建本地仓库 chart仓库基本管理 Helm安装 Helm ...

  4. BFS搜索算法应用_Codevs 1004 四子连棋

    #define _CRT_SECURE_NO_WARNINGS #include <iostream> #include <algorithm> #include <cs ...

  5. iOS问题#解决方案#之关于“application/x-www-form-urlencoded;charset=utf-8” not supported

    http://www.cnblogs.com/ChenYilong   http://www.cnblogs.com/ChenYilong   如果你用的是AFN/ASI,那得修改源代码了,因为AFN ...

  6. HDU 1251 统计难题 字符匹配

    题目描述:先说明此题只有一个测试实例,然后输入一系列的单词,以一个回车为结束符,然后输入一个字符串,要你查找以这个字符串为前缀的单词的个数,处理到文件结束. 解题报告:一开始看到这题,竟然直接用暴力去 ...

  7. Apache的对象复制详解

    BeanUtils.copyProperties 和 PropertyUtils.copyProperties 两个工具类都是对两个bean之前存在name相同的属性进行处理,无论是源bean或者目标 ...

  8. 批量增加Linux系统账号、重置账号密码、FTP账号批量测试

    批量增加Linux系统账号.重置账号密码是用Linux Shell脚本来做的:批量FTP账号测试是用Python脚本来做的.这些脚本都是读取一个用户名和密码文件,然后基于该用户名密码文件进行自动批量测 ...

  9. ubuntu16.04系统搜狗输入法的安装

    参考博客:https://www.cnblogs.com/lrj567/p/6307329.html 本来不想写的,但是最近老是重装系统,每次百度特别浪费时间,特此记录一下 先去官网下载搜狗输入法li ...

  10. flask基础之Response响应对象(九)

    前言 Response对象负责对客户端的响应,每一个请求都会有一个Response对象,那么它在一个请求的声明周期内是怎么发挥作用的呢? Response对象 响应发生的位置 先回顾一下http请求的 ...