hdu5289 单调队列
这题说的是给了 n个数 然后让你计算出所有区间中那些数的最大值减最小值小于k这样的区间有多少个
/*
这样我们给我们在处理过程中的区间做一些处理
我们在处理即将进来的数的时候我们并不知道他是不是我们区间的最小或者最大值
但是我们可以将他们处理一下 用两个队列 一个队列放的逐渐减小的数列
一个放的是逐渐增大的队列,放的位置必须按照出现的位置来放,按照大小来放,
把一些没用的点排除了,因为他们没有存在的必要《即不能当最大值也不能当最小值》
一但出现了大于k的情况我们可以判断现在的维护的这个队列的区间大小来得到结果 */ #include <cstdio>
#include <cstring>
#include <queue>
#include <algorithm>
#include<iostream>
using namespace std ;
#define LL __int64
int a[];
int main()
{
int cas;
scanf("%d",&cas);
for(int cc=; cc<=cas; cc++)
{
deque<int>d1,d2;
int n,k;
scanf("%d%d",&n,&k);
for(int i=; i<n; i++)
{
scanf("%d",&a[i]);
}
long long ans=;
int l=;
for(int i=; i<n; i++)
{
while(!d1.empty()&&d1.back()<a[i])d1.pop_back();
d1.push_back(a[i]);
while(!d2.empty()&&d2.back()>a[i])d2.pop_back();
d2.push_back(a[i]);
while(!d1.empty()&&!d2.empty()&&d1.front()-d2.front()>=k)
{
ans+=i-l;
if(d1.front()==a[l])d1.pop_front();
if(d2.front()==a[l])d2.pop_front();
l++;
}
}
while(l<n){
ans+=n-l;l++;
}
printf("%I64d\n",ans);
}
return ;
}
hdu5289 单调队列的更多相关文章
- hdu5289(2015多校1)--Assignment(单调队列)
Assignment Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Total ...
- BestCoder Round #89 B题---Fxx and game(单调队列)
题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=5945 问题描述 输入描述 输出描述 输入样例 输出样例 题意:中文题,不再赘述: 思路: B ...
- 单调队列 && 斜率优化dp 专题
首先得讲一下单调队列,顾名思义,单调队列就是队列中的每个元素具有单调性,如果是单调递增队列,那么每个元素都是单调递增的,反正,亦然. 那么如何对单调队列进行操作呢? 是这样的:对于单调队列而言,队首和 ...
- FZU 1914 单调队列
题目链接:http://acm.fzu.edu.cn/problem.php?pid=1914 题意: 给出一个数列,如果它的前i(1<=i<=n)项和都是正的,那么这个数列是正的,问这个 ...
- BZOJ 1047 二维单调队列
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1047 题意:见中文题面 思路:该题是求二维的子矩阵的最大值与最小值的差值尽量小.所以可以考 ...
- 【BZOJ3314】 [Usaco2013 Nov]Crowded Cows 单调队列
第一次写单调队列太垃圾... 左右各扫一遍即可. #include <iostream> #include <cstdio> #include <cstring> ...
- BZOJ1047: [HAOI2007]理想的正方形 [单调队列]
1047: [HAOI2007]理想的正方形 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 2857 Solved: 1560[Submit][St ...
- hdu 3401 单调队列优化DP
Trade Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Submit Status ...
- 【转】单调队列优化DP
转自 : http://www.cnblogs.com/ka200812/archive/2012/07/11/2585950.html 单调队列是一种严格单调的队列,可以单调递增,也可以单调递减.队 ...
随机推荐
- 1、python接口测试requests
import requestsimport jsonr=requests.get('http://www.baidu.com') #get 请求方式r=r ...
- JavaWeb开发如何用Tomcat部署发布
一.如何安装TomCat 1.1安装包下载地址:https://tomcat.apache.org/download-70.cgi 1.2 安装exe文件,下一步直到安装成功.并启动Tomcat服务 ...
- 重写toString()
重写Object的toString()之前,得到的结果是 类型 @ 内存地址 demo: package cn.sasa.demo1; public class Test { public stat ...
- JavaScript学习笔记--语法
代码风格: 每句结尾不用加分号: 单行注释用//,多行注释用/*...需要注释掉的代码....*/ 严格区分大小写 优雅的代码需要注意锁进 基础知识: Number:JavaScript不区分整数和浮 ...
- oracle按照指定列排序操作
按照...分组排序后,得到行编号: row_number() over(partition by ... order by ...) 按照...分组排序后,得到相应的列的第一个数据: first_va ...
- finecms如何批量替换文章中的关键词?
Finecms批量替换文章关键词要怎么操作呢,比如把关键词A换为B?Finecms是免费开源无商业限制的内容管理系统,个人在维护,但二次开发很灵活,我们可以通过开发插件或数据库sql语句来操作,下面就 ...
- SegmentedControlIOS使用
代码: import React, { Component } from 'react'; import { AppRegistry, StyleSheet, Text, SegmentedContr ...
- HTTP协议与WEB框架简介
HTTP协议与WEB框架简介 一.HTTP协议 HTTP简介 HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wid ...
- 【SVM、决策树、adaboost、LR对比】
一.SVM 1.应用场景: 文本和图像分类. 2.优点: 分类效果好:有效处理高维空间的数据:无局部最小值问题:不易过拟合(模型中含有L2正则项): 3.缺点: 样本数据量较大需要较长训练时间:噪声不 ...
- vue-自定义pc端键盘-动画
<template> <div class="keyboard"> <div class="keyboard_key"> & ...