P3512 [POI2010]PIL-Pilots
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的更多相关文章
- P3512 [POI2010]PIL-Pilots-洛谷luogu
刚研究完单调队列和单调栈 于是就找题做了 发现了这道蓝题 以为很简单 就着手来写了 然而 并不是我想的那样 只是有一点点思路 无奈 还是看了题解 好吧题解是真的挺好的 ---------------- ...
- luogu P3512 [POI2010]PIL-Pilots
题目描述 In the Byteotian Training Centre, the pilots prepare for missions requiring extraordinary preci ...
- [洛谷P3512 [POI2010]PIL-Pilots]
题目链接: 传送门走这里 题目分析: 感觉不是很难啊--不像是蓝题(AC量也不像)恶意评分? 少打了一个+1调了半天,就这样居然还能过60pts?我思路和题解第一篇高度重合是什么鬼啊,太过分了吧本来还 ...
- BZOJ 2096: [Poi2010]Pilots( set )
用个set维护就可以水过去...O(NlogN) 应该可以用单调队列O(N).... --------------------------------------------------------- ...
- bzoj2096[Poi2010]Pilots 单调队列
2096: [Poi2010]Pilots Time Limit: 30 Sec Memory Limit: 162 MBSubmit: 983 Solved: 513[Submit][Statu ...
- 【BZOJ2096】[Poi2010]Pilots 双指针+单调队列
[BZOJ2096][Poi2010]Pilots Description Tz又耍畸形了!!他要当飞行员,他拿到了一个飞行员测试难度序列,他设定了一个难度差的最大值,在序列中他想找到一个最长的子串, ...
- BZOJ 2096: [Poi2010]Pilots
Description 求一个最长的序列,最大值最小值之差不超过 \(k\) . Sol 单调队列. 一个队列直接上就行.. Code /******************************* ...
- bzoj2096: [Poi2010]Pilots
Description Tz又耍畸形了!!他要当飞行员,他拿到了一个飞行员测试难度序列,他设定了一个难度差的最大值,在序列中他想找到一个最长的子串,任意两个难度差不会超过他设定的最大值.耍畸形一个人是 ...
- 【刷题】BZOJ 2096 [Poi2010]Pilots
Description Tz又耍畸形了!!他要当飞行员,他拿到了一个飞行员测试难度序列,他设定了一个难度差的最大值,在序列中他想找到一个最长的子串,任意两个难度差不会超过他设定的最大值.耍畸形一个人是 ...
随机推荐
- C#列表所有IIS站点以及相关站点属性
using System; using System.Drawing; using System.Collections; using System.ComponentModel; using Sys ...
- mybatis与分布式事务的面试
mybatis的面试: https://www.cnblogs.com/huajiezh/p/6415388.html 本地事务与分布式事务: https://www.cnblogs.com/xcj2 ...
- Python模块调用方式详解
Python模块调用方式详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 模块,用一砣代码实现了某个功能的代码集合. 类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其 ...
- bzoj千题计划175:bzoj1303: [CQOI2009]中位数图
http://www.lydsy.com/JudgeOnline/problem.php?id=1303 令c[i]表示前i个数中,比d大的数与比d小的数的差,那么如果c[l]=c[r],则[l+1, ...
- 转 -----那些年总也记不牢的IO
关于资源关闭: 一般情况下是:先打开的后关闭,后打开的先关闭 另一种情况:看依赖关系,如果流a依赖流b,应该先关闭流a,再关闭流b 例如处理流a依赖节点流b,应该先关闭处理流a,再关闭节点流b 当然完 ...
- 《高性能MySQL》——第一章MySQL的架构与历史
1.可以使用SHOW TABLE STATUS查询表的相关信息. 2.默认存储引擎是InnoDB,如果没有什么很特殊的要求,InnoDB引擎是我们最好的选择. 3.mysql的infobright引擎 ...
- H5 Day2 练习
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 【洛谷P2420】让我们异或吧
题目描述 异或是一种神奇的运算,大部分人把它总结成不进位加法. 在生活中…xor运算也很常见.比如,对于一个问题的回答,是为1,否为0.那么: (A是否是男生 )xor( B是否是男生)=A和B是否能 ...
- linux通过sendmail发送邮件
安装sendmail: [root@li676-235 ~]# yum install sendmail 安装好后执行. [root@li676-235 ~]# /etc/init.d/sendmai ...
- SQL008存储过程总结
1.如何调用存储过程 DECLARE @Id INT --输入参数 DECLARE @OutPutID INT --输出参数 EXEC [dbo].Order_SellPR @Id,@OutPutID ...