XDOJ_1156_单调队列
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了XDOJ_1156_单调队列相关的知识,希望对你有一定的参考价值。
http://acm.xidian.edu.cn/problem.php?id=1156
递减的单调队列,保存人的编号和入队耐心-入队时间。
#include<iostream> #include<cstring> #include<cstdio> #include<algorithm> #include<queue> using namespace std; struct st { int num,t; }s; deque<st> q; int n,x; int main() { while(~scanf("%d",&n)) { while(!q.empty()) q.pop_back(); int out = 1,cnt = 1; for(int i = 1;i <= n;i++) { scanf("%d",&x); switch(x) { case 1: int tt; scanf("%d",&tt); s.t = tt-i; s.num = cnt++; while(!q.empty() && q.back().t <= s.t) q.pop_back(); q.push_back(s); break; case 2: if(q.front().num == out++) q.pop_front(); break; case 3: printf("%d\n",q.front().t+i); } } } return 0; }
以上是关于XDOJ_1156_单调队列的主要内容,如果未能解决你的问题,请参考以下文章
BZOJ_3316_JC loves Mkk_ 二分答案 + 单调队列
BZOJ_1342_[Baltic2007]Sound静音问题_单调队列