5368. 【NOIP2017提高A组模拟9.16】为逝去的公主献上的七重樱 单调队列
2017-09-16 19:10
459 查看
简化题意:求mex,有撤销,删除,添加,询问四种操作,n<=1e7.
WerkeyTom_FTD大爷的题目。
O(n)明显。
亏大发了我,想了半天想出正解但是忘记单调队列怎么维护最小值了,对没错你没有听错我忘记单调队列怎么维护最小值了,发生这种事我很抱歉…想扇自己两耳光。
其实主要是想着要维护原来的队列完整,如果维护一个单调递增那肯定容易啊,问题是要让维护的队列完整,因为我撤销撤的是队头,如果你把队列搞乱了就GG了。
那怎么办?那当然是tm重新开一个队列啊!!!woc我智障无边了我。。
具体一点的话:维护撤销的东西就好了,求最小值,还有就是添加或者删除的x如果>操作数都没有影响,我没认真分析没搞出来,所以我细节炸了,而且我是可以直接暴力往前添加的(num),反正是均摊线性。。。
#include<cstdio> #include<algorithm> #include<cstring> #define fo(i,a,b) for(int i=a;i<=b;i++) #define fd(i,a,b) for(int i=a;i>=b;i--) using namespace std; const int N=1e7+5; int n,m; int op,l,r,num; int vis ; int q1 ,q2 ; int t1,w1,t2,w2; int read() { int x=0,f=1;char ch=getchar(); while (ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();} while (ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();} return x*f; } int main() { freopen("knowledge.in","r",stdin); freopen("knowledge.out","w",stdout); scanf("%d%d",&m,&op); int last=0; t1=t2=1,w1=w2=0; int num=0; fo(i,1,m) { int id=read(); int x; if (id==1) { x=read(); if (op)x^=last; if (x<=m)vis[x]=1; while (vis[num])num++; } else if (id==2) { x=read(); if (op)x^=last; if (x<=m)vis[x]=0; q1[++w1]=x; while (t2<=w2&&q2[w2]>x)w2--; q2[++w2]=x; } else if (id==3) { if (t1>w1)continue; if (q1[t1]<=m)vis[q1[t1]]=1; while (vis[num])num++; if (q2[t2]==q1[t1])t2++; t1++; } else if (id==4) { last=num; if (t2<=w2)last=min(last,q2[t2]); printf("%d\n",last); } } return 0; }
相关文章推荐
- 【jzoj5368】【NOIP2017提高A组模拟9.16】【为逝去的公主献上的七重樱】【单调队列】
- JZOJ5390. 【NOIP2017提高A组模拟9.26】逗气 单调队列
- JZOJ 5329. 【NOIP2017提高A组模拟8.22】时间机器
- 【jzoj5332】【NOIP2017提高A组模拟8.23】【密码】【ac自动机】【动态规划】
- JZOJ5394. 【NOIP2017提高A组模拟10.5】Ping 树上差分 树状数组
- [JZOJ5394]【NOIP2017提高A组模拟10.5】Ping
- JZOJ 5395. 【NOIP2017提高A组模拟10.6】Count
- jzoj5399 【NOIP2017提高A组模拟10.7】Confess
- 【JZOJ 5402】【NOIP2017提高A组模拟10.8】God Knows
- 5334. 【NOIP2017提高A组模拟8.24】空
- JZOJ5456. 【NOIP2017提高A组冲刺11.6】奇怪的队列
- jzoj5347. 【NOIP2017提高A组模拟9.5】遥远的金字塔 容斥
- JZOJ 5379. 【NOIP2017提高A组模拟9.21】Victor爱数字
- 【WinterCamp 2013】楼房重建 && 【NOIP2017提高A组模拟10.8】God Knows
- JZOJ 5389. 【NOIP2017提高A组模拟9.26】解梦
- jzoj5331 【NOIP2017提高A组模拟8.23】壕游戏
- JZOJ 5400. 【NOIP2017提高A组模拟10.7】Repulsed
- JZOJ 5405.【NOIP2017提高A组模拟10.10】Permutation
- JZOJ 5403. 【NOIP2017提高A组模拟10.8】Lost My Music
- JZOJ5405. 【NOIP2017提高A组模拟10.10】Permutation