51nod 1275 连续子段的差异(twopointer+单调队列)
2024-08-31 10:11:52
对于每一个i找到最近的j满足最大值-最小值>K,对答案的贡献为j-i,用单调队列维护最值即可
#include<iostream>
#include<cstdlib>
#include<cstring>
#include<cstdio>
#include<algorithm>
#include<queue>
#include<cmath>
#include<map>
#define ll long long
using namespace std;
const int maxn=,inf=1e9;
int n,m,l,r,L,R,K;
int q[maxn],Q[maxn],a[maxn];
ll ans;
void read(int &k)
{
int f=;k=;char c=getchar();
while(c<''||c>'')c=='-'&&(f=-),c=getchar();
while(c<=''&&c>='')k=k*+c-'',c=getchar();
k*=f;
}
int main()
{
read(n);read(K);
for(int i=;i<=n;i++)read(a[i]);
l=;r=;L=;R=;
for(int i=,j=;i<=n;i++)
{
while(j<=n)
{
while(l<=r&&a[q[r]]>=a[j])r--;
while(L<=R&&a[Q[R]]<=a[j])R--;
q[++r]=Q[++R]=j;
if(a[Q[L]]-a[q[l]]>K)break;
j++;
}
ans+=j-i;
q[l]==i&&(l++);Q[L]==i&&(L++);
}
printf("%lld\n",ans);
return ;
}
最新文章
- 开发维护大型 Java 项目的建议
- [No000089]String的(补空位)左对齐,(补空位)右对齐
- location.hash详解
- 《2016ThoughtWorks技术雷达峰会----微服务架构》
- Codeforces 620E New Year Tree(DFS序 + 线段树)
- Jump Game II
- MFC编程入门之五(MFC消息映射机制概述)
- Guava官方文档-RateLimiter类
- Delphi ComboBox的属性和事件、及几个鼠标事件的触发
- php执行shell更新svn文件的方法
- Nginx运行Laravel的配置
- cookie和session的区别异同
- Java基础知识二次学习-- 第二章 基础语法与递归补充
- Rhythmbox音乐播放器常见问题
- 13.Linux键盘驱动 (详解)
- Linux PHP多版本切换 超简单办法
- android下ViewPager的使用,带下部选项栏的切换动画
- python学习:常量和变量
- [宽度优先搜索] FZU-2150 Fire Game
- 11G新特性 -- 分区表和增量统计信息
热门文章
- 「Python」Numpy equivalent of MATLAB&#39;s cell array
- 在nginx环境下,直接用域名访问(首页)
- Objective-C 构造方法 分类 类的深入研究
- Objective-C 封装 继承 多态
- Java开发工程师(Web方向) - 02.Servlet技术 - 第4章.JSP
- JDK源码分析:Integer.java部分源码解析
- JavaScript 作用域链范例
- 【MySQL解惑笔记】Centos7下卸载彻底MySQL数据库
- Spring MVC 整合Swagger的一些问题总结
- mac mysql连接报错ERROR 1045 (28000): Access denied for user &#39;root&#39;@&#39;localhost&#39; (using password: YES)