首页 > 其他分享 >基础数据结构

基础数据结构

时间:2023-06-13 21:35:53浏览次数:64  
标签:ch ll 基础 long while 数据结构 include define

单调队列

去尾、删头、窗口
来维护一个单调队列
例题:
1.https://www.luogu.com.cn/problem/P1886
代码:

//>>>Qiansui
#include<map>
#include<set>
#include<stack>
#include<cmath>
#include<queue>
#include<deque>
#include<cstdio>
#include<string>
#include<vector>
#include<utility>
#include<iomanip>
#include<cstring>
#include<iostream>
#include<algorithm>
#define ll long long
#define ull unsigned long long
#define mem(x,y) memset(x,y,sizeof(x))
//#define int long long

inline ll read()
{
	ll x=0,f=1;char ch=getchar();
	while (ch<'0'||ch>'9'){if (ch=='-') f=-1;ch=getchar();}
	while (ch>='0'&&ch<='9'){x=(x<<1)+(x<<3)+ch-48;ch=getchar();}
	return x*f;
}

using namespace std;
const int maxm=1e6+5,inf=0x3f3f3f3f,mod=998244353;
ll n,k,a[maxm];
deque<ll> q;//单调队列

void solve(){
	cin>>n>>k;
	ll t;
	for(int i=0;i<n;++i) cin>>a[i];
	for(int i=0;i<n;++i){
		while(!q.empty()&&a[q.back()]>a[i])//去尾
			q.pop_back();
		q.push_back(i);
		if(i>=k-1){
			while(!q.empty()&&q.front()<=i-k)
				q.pop_front();//删头
			cout<<a[q.front()]<<" \n"[i==n-1];
		}
	}
	q.clear();
	for(int i=0;i<n;++i){
		while(!q.empty()&&a[q.back()]<a[i]){
			q.pop_back();
		}
		q.push_back(i);
		if(i>=k-1){
			while(!q.empty()&&q.front()<=i-k)
				q.pop_front();
			cout<<a[q.front()]<<" \n"[i==n-1];
		}
	}
	return ;
}

signed main(){
	ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
	int _=1;
//	cin>>_;
	while(_--){
		solve();
	}
	return 0;
}

标签:ch,ll,基础,long,while,数据结构,include,define
From: https://www.cnblogs.com/Qiansui/p/17478744.html

相关文章

  • 《数据结构与算法》之二叉树(补充树)
    一.树结构之二叉树操作二叉树的查找二叉搜索树,也称二叉排序树或二叉查找树二叉搜索树:一棵二叉树,可以为空,如果不为空,应该满足以下性质:非空左子树的所有结点小于其根结点的键值非空右子树的所有结点大于其根结点的键值左右子树都是二叉搜索树对于二叉树的查找,其实沿用的是......
  • HashMap内部的数据结构是什么?底层是怎么实现的?
    HashMap内部结构jdk8以前:数组+链表jdk8以后:数组+链表(当链表长度到8时,转化为红黑树)在并发的情况,发生扩容时,可能会产生循环链表,在执行get的时候,会触发死循环,引起CPU的100%问题,所以一定要避免在并发环境下使用HashMap。......
  • .Net7基础类型的优化和循环克隆优化
    前言.Net7里面对于基础类型的优化,是必不可少的。因为这些基础类型基本上都会经常用到,本篇除了基础类型的优化介绍之外,还有一个循环克隆的优化特性,也一并看下。概括1.基础类型优化基础类型的优化不会有些不会涉及ASM,主要是记忆。一:double.Parse和float.Parse,把某数值转换成d......
  • vue3进阶——组件基础
    组件允许我们将UI划分为独立的、可重用的部分,并且可以对每个部分进行单独的思考。在实际应用中,组件常常被组织成层层嵌套的树状结构,这和我们嵌套HTML元素的方式类似,Vue实现了自己的组件模型,使我们可以在每个组件内封装自定义内容与逻辑。定义组件当使用构建步骤时,我们一般......
  • Python基础之subprocess模块、hashlib模块、日志模块
    subprocess模块tasklist:列举出来文件进程命令"""1.以后我们可以用自己的电脑连接上别人的电脑(socket)2.通过subprocess可以在别人的计算机上执行我们想要执行的命令3.把在别人计算机上执行的结果给返回过来"""importsubprocessimportsubprocessres=subprocess.P......
  • [ARM汇编]计算机原理与数制基础—1.1.2 二进制与十进制数制转换
    在计算机中,我们通常使用二进制数制来表示数据,因为计算机的基本电平只有两种状态:高电平(通常表示为1)和低电平(通常表示为0)。而在我们的日常生活中,我们习惯使用十进制数制。为了方便理解,我们需要掌握二进制与十进制之间的转换方法。二进制转十进制将二进制数转换为十进制数时,我们......
  • KCD技术分享:以SBOM为基础的云原生应用安全治理
    随着越来越多的企业和组织将他们的应用迁移到云上,云原生技术的应用部署和管理正在变得更加灵活和高效,但也相应地引入了一些新的安全风险。2023年4月15日,由云原生计算基金会(CNCF)发起,全球各国当地的CNCF大使、员工以及CNCF会员单位联合组织的KubernetesCommunityDays(KCD)技术沙......
  • java基础语法
    今天开始学习java,对于只学过python的我来说,第一感觉就是java比较啰嗦,但是也比较严谨,这可能是好事!python,java有几点不同。1,java最基本的单位是class类,所有的东西都是由类构成的,java中没有函数,它只有类中的方法,所以定义的时候必须把它放在类里面,放外面会报错python中可以......
  • 互动白板的技术基础和发展
    作者|伍双策划|包研、Alex编辑|Alex互动白板年终盘点#005#最近互动白板「Miro」获得4亿美元融资,估值达到175亿美元。这则消息也让很多人开始关注互动白板这个曾经非常小众的领域。 我们为什么需要互动白板?会议或者教学中,我们常见的需求是语音视频通信外加展示资料。所以一般......
  • Spring Bean基础
    在接下来的一段时间里,主要分享一些Spring相关的知识文章!Spring官方文档BeanDefinition元信息BeanDefinition是定义Bean的配置元信息接口,主要作用是描述一个Bean,里面存储Bean的相关信息;包括类名、构造器、属性、方法、作用域、自动绑定的模式,生命周期回调等等。概述他的类图继承关......