首页 > 其他分享 >单调队列

单调队列

时间:2023-07-01 09:22:24浏览次数:33  
标签:洛谷 队列 int while 例题 单调

目录

单调队列

单调的队列,即插入元素时保证队列是单调的。
去尾、删头、窗口
来维护一个单调队列

例题

洛谷:P2629

洛谷P1886

代码:

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;
}

2023暑假训练-单调队列 单调栈

传送门

标签:洛谷,队列,int,while,例题,单调
From: https://www.cnblogs.com/Qiansui/p/17518816.html

相关文章

  • 2023ACM暑假训练day 5-单调队列 单调栈
    目录DAY5单调队列/栈训练情况简介A题B题C题D题E题未出,题解补F题未出,题解补G题看了cf数据,得wa启发补充内容单调栈MonotoneStack单调栈矩形系列字典序最小贡献法单调队列MonotoneQueueDAY5单调队列/栈训练地址:传送门训练情况简介早上:A、B、C、D题下午:E题(未......
  • IBM WebSphere MQ8.0 安装与队列创建
    最近接触的项目中使用了IBMWebsphereMQ8.x,由于要为其编写监控插件,所以在网上找了很久的资料,发现8.x实在是太老了,很多资源和教程都没有,遂决定在此统一整理和记录一下.安装下载安装包IBM官方已不再提供下载,这里贴一下网盘的链接链接:https://pan.baidu.com/s/1f2U0XqEe0hi......
  • python 队列简单实现
    1classQueuryExcept(Exception):...23classLinkNode:4def__init__(self,value:int,next=None):5self.value:int=value6self.next:LinkNode=next78def__repr__(self)->str:9li=[se......
  • 单调栈
    目录单调栈例题单调栈单调的栈,即插入元素时保证栈内元素是有序的。例题P2422良好的感觉贪心,其实对每一个最小值,找到其的左右小于最大范围,但关键在于怎么快速找到这个范围,这里利用了单调栈详见代码:constintmaxm=1e5+5,inf=0x3f3f3f3f,mod=998244353;lln,a[maxm],sum[......
  • Kubernetes编程——client-go基础—— 工作队列(workqueue)
    工作队列(workqueue[wɜːk][kjuː])https://github.com/kubernetes/kubernetes/tree/release-1.27/staging/src/k8s.io/client-go/util/workqueue我理解意思是说:这里说的"工作队列"指的一个数据结构。用户可以按照队列所预定义的顺序向这个队列中添加和取出......
  • MQ集群之仲裁队列
    仲裁队列:仲裁队列是3.8版本以后才有的新功能,用来替代镜像队列,具备下列特征:与镜像队列一样,都是主从模式,支持主从数据同步使用非常简单,没有复杂的配置主从同步基于Raft协议,强一致从RabbitMQ3.8版本开始,引入了新的仲裁队列,他具备与镜像队里类似的功能,但使用更加方便。添加仲......
  • 惰性队列
    消息堆积问题当生产者发送消息的速度超过了消费者处理消息的速度,就会导致队列中的消息堆积,直到队列存储消息达到上限。之后发送的消息就会成为死信,可能会被丢弃,这就是消息堆积问题。解决消息堆积有三种思路:增加更多消费者,提高消费速度。也就是我们之前说的workqueue模式如......
  • 浅谈单调队列优化DP
    对于形如\[f_i=\max(f_{L≤j≤R}+w_i)\]的状态转移方程,也就是转移来自之前某个定长区间的最值,我们可以使用单调队列来维护区间最值,从而优化时间复杂度。烽火传递我们看到题目可以想到用\(f_i\)表示考虑到\(i\)这个烽火台,点第\(i\)个的合法方案中的最小代价那么可以想到......
  • 基于SpringBoot整合Redisson的延迟队列
    一、需求:     1.订单下单超过30分钟以后,如果还未支付,则自动转为取消支付状态 2.订单收货超过七天以后,如果还未评价,则自动转为好评 3.等类似需求二、实现步骤:    1. 引入redisson依赖<dependency><groupId>org.rediss......
  • Java阻塞队列原理
    阻塞队列,关键字是阻塞,先理解阻塞的含义,在阻塞队列中,线程阻塞有这样的两种情况:1.当队列中没有数据的情况下,消费者端的所有线程都会被自动阻塞(挂起),直到有数据放入队列。2.当队列中填满数据的情况下,生产者端的所有线程都会自动阻塞(挂起),直到队列中有空的位置,线程被自动唤醒。阻塞队列的......