题解 P2032 【扫描】
Berlin_Jacor · · 题解
STL大法好(雾
就用队列就好了,一定记得要优先考虑数据结构
(挑战最短代码QAQ,然后我输了
每次判断队头是否符合要求,将不符合要求的删除掉
#include<bits/stdc++.h>
using namespace std;
const int N=1000005;
int n,k;
struct node{int v,id;}a[N];
deque<node> qmin,qmax;
int main()
{
cin>>n>>k;
for(int i=1;i<=n;i++)cin>>a[i].v,a[i].id=i;
for(int i=1;i<=n;i++)
{
while(!qmax.empty()&&qmax.back().v<=a[i].v)qmax.pop_back();
qmax.push_back(a[i]);
if(qmax.front().id==i-k)qmax.pop_front();
if(i>=k)cout<<qmax.front().v<<endl;
}
return 0;
}
这题其实可以用来练习线段树,但我不会啊,我太菜了,,,
另外推荐P1886和P1440,是三倍经验哦
打题解不易,留个Zan再走吧
虽然自己写代码很慢,收获的却是自己