POJ2823Sliding Window(单调队列)
2017-07-23 20:22
218 查看
题意:
求数组中每k个下标连续的数字中的最大值和最小值
思路:
相当于HDU3530和HDU1506的综合应用
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<queue>
using namespace std;
const int maxn = 1e6+5;
deque<pair<int, int> > q1, q2;
int ans1[maxn], ans2[maxn];
int main()
{
int n, k;
while(scanf("%d%d", &n, &k) != EOF)
{
q1.clear();q2.clear();
for(int i = 1; i <= n; i++)
{
int num;scanf("%d", &num);
while(!q1.empty() && q1.back().second >= num) q1.pop_back();
q1.push_back(make_pair(i, num));
while(!q1.empty() && i - q1.front().first >= k) q1.pop_front();
while(!q2.empty() && q2.back().second <= num) q2.pop_back();
q2.push_back(make_pair(i, num));
while(!q2.empty() && i - q2.front().first >= k) q2.pop_front();
if(i >= k)
{
ans1[i] = q1.front().second;
ans2[i] = q2.front().second;
}
}
for(int i = k; i <= n; i++)
printf("%d%c", ans1[i], i == n ? '\n' : ' ');
for(int i = k; i <= n; i++)
printf("%d%c", ans2[i], i == n ? '\n' : ' ');
}
return 0;
}
求数组中每k个下标连续的数字中的最大值和最小值
思路:
相当于HDU3530和HDU1506的综合应用
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<queue>
using namespace std;
const int maxn = 1e6+5;
deque<pair<int, int> > q1, q2;
int ans1[maxn], ans2[maxn];
int main()
{
int n, k;
while(scanf("%d%d", &n, &k) != EOF)
{
q1.clear();q2.clear();
for(int i = 1; i <= n; i++)
{
int num;scanf("%d", &num);
while(!q1.empty() && q1.back().second >= num) q1.pop_back();
q1.push_back(make_pair(i, num));
while(!q1.empty() && i - q1.front().first >= k) q1.pop_front();
while(!q2.empty() && q2.back().second <= num) q2.pop_back();
q2.push_back(make_pair(i, num));
while(!q2.empty() && i - q2.front().first >= k) q2.pop_front();
if(i >= k)
{
ans1[i] = q1.front().second;
ans2[i] = q2.front().second;
}
}
for(int i = k; i <= n; i++)
printf("%d%c", ans1[i], i == n ? '\n' : ' ');
for(int i = k; i <= n; i++)
printf("%d%c", ans2[i], i == n ? '\n' : ' ');
}
return 0;
}
相关文章推荐
- HDU 4122 单调队列
- POJ 3162 Walking Race TreeDP+双单调队列 ★
- poj 2796 Feel Good 单调队列
- HDU 4362 单调队列优化DP
- uva 1427 - Parade(dp+单调队列)
- poj2823单调队列
- BZOJ1758 [Wc2010]重建计划(二分答案+点分治+单调队列)
- UESTC - 594 我要长高(DP+滚动数组优化+单调队列优化)
- Codechef Sam and Sequences(单调队列)
- HDU 3530 Subsequence (单调队列)
- 【NOIP数据结构专项】单调队列单调栈
- 算法解析之感想---单调队列优化多重背包思路
- hdu 5945 Fxx and game 单调队列优化dp
- 单调队列应用
- CodeForces 601B Lipshitz Sequence (单调队列)
- 单调队列
- [poj2823]sliding windows(单调队列模板题)
- HDU 4193 Non-negative Partial Sums(单调队列)
- tyvj 1305 最大m子段和 单调队列 求连续l(1<=l<=k)个数的和的最大值 数列不可循环
- Largest Rectangle in a Histogram (单调队列)