zoukankan      html  css  js  c++  java
  • 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 }
  • 相关阅读:
    TreeList Linq
    MasterDetail Linq
    C# 事务处理
    设计模式——代理模式(Proxy Pattern)
    设计模式——装饰模式(Decorator Pattern)
    C# 调用WCF服务
    加密解密
    Effective C#高效编程(02:常量)
    切换城市功能
    DataPager控件使用
  • 原文地址:https://www.cnblogs.com/fu3638/p/7103462.html
Copyright © 2011-2022 走看看