poj-2823(单调队列)
题意:给你长度位n的数组,问每个长度为m的段的最值;
解题思路:这道题是单调队列的入门题;
#include<iostream>
#include<algorithm>
#include<queue>
#include<cstdio>
#define maxn 1000100
using namespace std;
struct node
{
int val;
int pos;
}a[maxn];
int que[maxn];
int mn[maxn];
int mx[maxn];
int n,m;
int s[maxn];
void get_min()
{
int head=1,tail=0,i;
for(i=1;i<m;i++)
{
while(head<=tail&&a[tail].val>=s[i])
tail--;
a[++tail].val=s[i];
a[tail].pos=i;
}
for(;i<=n;i++)
{
while(head<=tail&&a[tail].val>=s[i])
tail--;
a[++tail].val=s[i];
a[tail].pos=i;
while(a[head].pos<i-m+1)
head++;
mn[i-m+1]=a[head].val;
}
}
void get_max()
{
int head=1,tail=0,i;
for(i=1;i<m;i++)
{
while(head<=tail&&a[tail].val<=s[i])
tail--;
a[++tail].val=s[i];
a[tail].pos=i;
}
for(;i<=n;i++)
{
while(head<=tail&&a[tail].val<=s[i])
tail--;
a[++tail].val=s[i];
a[tail].pos=i;
while(a[head].pos<i-m+1)
head++;
mx[i-m+1]=a[head].val;
}
}
int main()
{
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++)
scanf("%d",&s[i]);
get_max();
get_min();
for(int i=1;i<=n-m+1;i++)
printf("%d ",mn[i]);
printf("\n");
for(int i=1;i<=n-m+1;i++)
printf("%d ",mx[i]);
printf("\n");
return 0;
}
poj-2823(单调队列)的更多相关文章
- Sliding Window POJ - 2823 单调队列模板题
Sliding Window POJ - 2823 单调队列模板题 题意 给出一个数列 并且给出一个数m 问每个连续的m中的最小\最大值是多少,并输出 思路 使用单调队列来写,拿最小值来举例 要求区间 ...
- caioj 1172 poj 2823 单调队列过渡题
给定一个n个数的数列,从左至右输出每个长度为m的数列段内的最大数. 输入:第一行两个整数n和m( 1<= n <= 20 0000,m<=n).下来给出n个整数. 输出:一行一个整数 ...
- poj 2823 单调队列
思路:裸的单调队列. #include<iostream> #include<cstring> #include<cstdio> #include<algor ...
- POJ 2823 单调队列入门水题
最最基础的单调队列题目.一个单增一个单减.还是可以借此好好理解一下单调队列的. #include <stdio.h> #include <string.h> #include ...
- poj 2823单调队列模板题
#include<stdio.h>//每次要吧生命值长的加入,吧生命用光的舍弃 #define N 1100000 int getmin[N],getmax[N],num[N],n,k, ...
- POJ 2838 单调队列
Sliding Window Time Limit: 12000MS Memory Limit: 65536K Total Submissions: 55309 Accepted: 15911 ...
- poj 3017 单调队列优化动态规划
思路:dp[i]=min{dp[j]+max(num[j+1]...num[i])},其中sum[i]-sum[j]<=m. 那么我们需要用单调队列维护j到i的最大值. #include< ...
- poj 2373 单调队列优化背包
思路:我们用单调队列保存2*b<=i-j<=2*a中的最大值.那么队列头就是最大值,如果队头的标号小于i-2*b的话,就出队,后面的肯定用不到它了. #include<iostrea ...
- POJ 3017 单调队列dp
Cut the Sequence Time Limit: 2000MS Memory Limit: 131072K Total Submissions: 8764 Accepted: 2576 ...
- POJ 1821 单调队列+dp
题目大意:有K个工人,有n个墙,现在要给墙涂色.然后每个工人坐在Si上,他能刷的最大范围是Li,且必须是一个连续子区间,而且必须过Si,他刷完后能获得Pi钱 思路:定义dp[i][j]表示前i个人,涂 ...
随机推荐
- c# 利用百度图像处理【人像分割】一键抠图
百度AI开放平台-人像分割: http://ai.baidu.com/tech/body/seg 注意本文后面的话,百度这个技术效果太差劲了,国外这 https://www.remove.bg/ 个比 ...
- java 加密 解密 Illegal key size
java.security.InvalidKeyException: Illegal key size 今天遇到一个奇怪的问题. 自己做的加签验签功能已经没有问题了,本地测试通过,同事放到服务器上 ...
- Service启动,绑定与交互
1. Service的启动方式有startServcie和bindService两种. startService时,会经历onCreate—onStartCommand—onDestroy生命周期, ...
- MemSQL与MySQL不兼容问题总结
1.数据行Update更新数据行时,如果数据行没有变化,MySQL返回受影响的数据行数为1,但MemSQL返回的数据行数为0. 2.MemSQL不支持唯一约束 3.MemSQL不支持外键约束
- Node.js api接口和SQL数据库关联
数据库表创建 服务器环境配置.连接 .操作.数据库 API接口 原则:
- C. Ayoub and Lost Array
链接 [https://codeforces.com/contest/1105/problem/C] 题意 给你n,表示数组长度,元素的值是l到r,问有多少种方案使得所有元素和整除3 分析 思维dp, ...
- vue学习笔记总结----思维导图
- RabbitMQ防止消息丢失
转载请注明出处 0.目录 RabbitMQ-从基础到实战(1)— Hello RabbitMQ RabbitMQ-从基础到实战(3)— 消息的交换 1.简介 RabbitMQ中,消息丢失可以简单的分为 ...
- jvisualvm中VisualGC插件提示:不受此JVM支持
Visual GC插件「不受此JVM支持」问题 - djp567的博客 - CSDN博客https://blog.csdn.net/djp567/article/details/78662047 jv ...
- 手机浏览器 - 如何消除<a>标签在点击时的蓝色底色?
为a标签设置这个样式: a{-webkit-tap-highlight-color:transparent};