社区讨论

TLE两个点的神奇单调队列

P1440求m区间内的最小值参与者 2已保存回复 4

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
4 条
当前快照
1 份
快照标识符
@lo1xbbct
此快照首次捕获于
2023/10/23 04:30
2 年前
此快照最后确认于
2023/11/03 04:57
2 年前
查看原帖
CPP
#include<iostream>
#include<queue>
using namespace std;
#define For(i , j , k) for(int i = j;i <= k;i++)
#define MaxN 2000005

int N , M;
int num[MaxN];

deque <int> q;

int main()
{
	ios::sync_with_stdio(false);
	cin.tie(0) , cout.tie(0);
	cin >> N >> M;
	For(i , 1 , N)
	{
		cin >> num[i];
		if(i > M)
		{
			while(!q.empty() && q.front() < i-M) q.pop_front();
			cout << num[ q.front() ] << endl;
		}
		else cout << (i == 1? 0 : num[ q.front() ]) << endl;
		
		while(!q.empty() && num[ q.back() ] > num[i]) q.pop_back();
		q.push_back(i);
	}
	return 0;
}
复杂度应该没有问题,但就是TLE了,求大佬指点qwq

回复

4 条回复,欢迎继续交流。

正在加载回复...