Codeforces 821C Okabe and Boxes(模拟)
Posted Yeader
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Codeforces 821C Okabe and Boxes(模拟)相关的知识,希望对你有一定的参考价值。
题目大意:给你编号为1-n的箱子,放的顺序不定,有n条add指令将箱子放入栈中,有n条remove指令将箱子移除栈,移出去的顺序是从1-n的,至少需要对箱子重新排序几次。
解题思路:可以通过把栈清空表示已经排过序了,如果下一次remove时栈为空,说明已经排序过且没有新的箱子放入,因为题目确保在需要删除之前添加每个箱子,所以肯定栈顶的箱子是我们所需要的。如果栈不为空则判断栈顶箱子序号是否是我们需要的,不是则重新排序,用清空栈来表示。
这里用数字模拟了栈。
1 #include<iostream> 2 using namespace std; 3 4 const int N=3e5+5; 5 6 int a[N]; 7 8 int main(){ 9 int n,len=0,pre=0,ans=0; 10 cin>>n; 11 for(int i=1;i<=n*2;i++){ 12 char s[10]; 13 cin>>s; 14 if(s[0]==‘a‘) 15 cin>>a[++len]; 16 else{ 17 if(len==0); 18 //清空栈 19 else if(a[len]==pre+1) len--; 20 else len=0,ans++; 21 pre++; 22 } 23 } 24 cout<<ans<<endl; 25 }
以上是关于Codeforces 821C Okabe and Boxes(模拟)的主要内容,如果未能解决你的问题,请参考以下文章
Codeforces 821A Okabe and Future Gadget Laboratory 题解
Codeforces 821E Okabe and El Psy Kongroo
Codeforces Round #420 D题翻译(17.6.25)