分析:

1、首先是尺取,尺取到每一个区间,区间满足这个条件,最大-最小<=k;

2、对于一个动态区间,怎么维护他的最大值,最小值(的下标);——单调队列;

  什么时候删掉头结点呢? 当我找到了当前区间的上限;我需要尺取移动头结点了;此时,单调队列不用怕,只要这个头不影响我的单调队列,我就可以不用管;否则弹掉;

 1 #include <bits/stdc++.h>
 2
 3 using namespace std;
 4
 5 const int maxn = 50000 + 5;
 6 int a[maxn];
 7
 8
 9 int main()
10 {
11     int n,k;
12     scanf("%d%d",&n,&k);
13     for(int i=0;i<n;i++)
14         scanf("%d",&a[i]);
15
16     int ans = 0;
17     deque<int> Amin,Amax;   //单调递减队列,单调递增队列
18
19     for(int i=0,j=0;i<n;i++) {
20
21         while(j<n) {
22
23             while(!Amin.empty()&&a[j]>=a[Amin.back()])
24                 Amin.pop_back();
25
26             while(!Amax.empty()&&a[j]<=a[Amax.back()])
27                 Amax.pop_back();
28             Amin.push_back(j);
29             Amax.push_back(j);
30
31             if(a[Amin.front()]-a[Amax.front()]<=k)
32                 j++;
33             else break;
34         }
35         ans+=(j-i);
36
37         if(Amin.front()==i)
38             Amin.pop_front();
39         if(Amax.front()==i)
40             Amax.pop_front();
41
42     }
43     printf("%d\n",ans);
44
45     return 0;
46 }

View Code

转载于:https://www.cnblogs.com/TreeDream/p/6803877.html

51nod 1275 连续子段的差异相关推荐

  1. 51nod 1275 连续子段的差异(twopointer+单调队列)

    对于每一个i找到最近的j满足最大值-最小值>K,对答案的贡献为j-i,用单调队列维护最值即可 #include<iostream> #include<cstdlib> # ...

  2. 【单调队列】51nod 1275 连续子段的差异

    题面在这里 单调队列的经典题-- 发现一个合法的区间的所有子区间都是合法的 那么枚举右端点,维护最小的左端点 相当于每次加入一个值,然后右移左端点,使得区间内的差值≤k\le k 如何快速获取最大/最 ...

  3. 解题报告:SP1043 GSS4 - Can you answer these queries III(GSS线段树八部曲之三)(区间最大连续子段和)

    要注意输入的数据有坑,x可能大于y- 我们可以模块化编程,使得整个代码井井有条 函数可以重名,只要参数不一样就行. 来源 yxc老师的上课板书 然后就是简单的代码了 #include<iostr ...

  4. 51nod 1049 最大子段和

    题目: N个整数组成的序列a[1],a[2],a[3],-,a[n],求该序列如a[i]+a[i+1]+-+a[j]的连续子段和的最大值.当所给的整数均为负数时和为0. 例如:-2,11,-4,13, ...

  5. CodeForces - 1486D Max Median(二分+最长连续子段和)

    题目链接:点击查看 题目大意:给出一个长度为 nnn 的数列,现在从长度至少为 kkk 的连续子段中,找到最大的中位数 题目分析:做过平均数的模型:POJ - 2018 Best Cow Fences ...

  6. CodeForces - 1373D Maximum Sum on Even Positions(最大连续子段和)

    题目链接:点击查看 题目大意:给出一个长度为 n 的数列 a ,允许选择一个子串进行翻转,问最后可以得到的,偶数位置的数字之和的最大值是多少 题目分析:模拟几次不难发现,我们翻转的长度必须是偶数才能有 ...

  7. CodeForces - 1359D Yet Another Yet Another Task(最大连续子段和)

    题目链接:点击查看 题目大意:选出一个连续子段和后,会减去相应区间内的最大值,问在此情况下的最大连续子段和是多少 题目分析:因为每个元素的取值很小,所以可以枚举每个元素作为最大值,然后依次求最大连续子 ...

  8. POJ - 2018 Best Cow Fences(二分+最长连续子段和)

    题目链接:点击查看 题目大意:给出n个正整数,求一个平均数最大的.长度不小于L的连续子段 题目分析:因为这个题目的答案满足二分的性质,也就是若二分的平均数小于答案,则更小的平均数肯定都满足答案(因为这 ...

  9. POJ - 1050 To the Max(最大连续子段和,线性dp)

    题目链接:点击查看 题目大意:给出一个n*n的矩阵,每个点都有一个权值,现在要从中选取一个子矩阵要求权值和最大,问这个最大权值和是多少 题目分析:因为是要求子矩阵的权值和最大的问题,我们可以直接维护一 ...

最新文章

  1. linux进程--自旋锁和互斥锁的区别(十五)
  2. java依赖和约束有啥区别_Java – Maven依赖关系太多了
  3. .NET Core 中导入导出Excel
  4. centos7安装oracle12c 三
  5. gradle 编译java配置文件_Andriod(三):配置文件build.gradle与AndroidManifest.xml
  6. 10进制转62进制 java_两种方法实现10进制和62进制互转 | 学步园
  7. C++的STL标准库学习(queue)队列(第四篇)
  8. opencv图像处理8-卷积
  9. Javascript常用对象的属性和方法
  10. csdn下载频道积分规则
  11. Linux下的Vivado安装——以Ubuntu为例
  12. 除了php云和骑士还有什么_PHP云人才系统 VS 骑士cms人才系统
  13. java混淆工具zelix比较_Java逆向基础之混淆器
  14. Molecular Contrastive Learning of Representations via Graph Neural Networks
  15. Scheme 语言 第一次的感触!
  16. item_sku - 获取sku详细信息
  17. c语言 不用锁存器 数码管倒计时,倒计时器课程设计.doc
  18. 20本必读的用户体验书目
  19. Upload上传@20210412
  20. 搜索引擎排名都选乐云seo_百度官网排名-搜索引擎算法优化

热门文章

  1. 「技术综述」一文道尽传统图像降噪方法
  2. 【迈克尔・乔丹:人工智能,革命远未发生】
  3. 人工智能领导世界走向何方?
  4. 为什么医学影像AI已进入「后深度学习时代」?
  5. ​2022年应用人工智能会是什么样子?
  6. 高金吉院士:让机器“自愈化”引领新科技变革
  7. RISC-V有何特别之处?
  8. 把握芯片科技发展趋势 促进半导体产业创新突破
  9. 108页报告一文看懂光刻机,看国产替代如何破局【附下载】
  10. DeepMind 综述深度强化学习:智能体和人类相似度竟然如此高!