题解 P6704 【[COCI2010-2011#7] GITARA】

· · 题解

更好的阅读体验

【不会栈的可以先看看这个】

这道题的标签是,所以这篇代码是STL的栈。

先讲一下思路:

#include<bits/stdc++.h>
using namespace std;
int n,p,a,b,ans=0;
stack<int>s[7];
int main(){
    cin>>n>>p;
    for(int i=1;i<=n;++i){
        cin>>a>>b;
        while(s[a].size()>0&&s[a].top()>b){
            ans++;
            s[a].pop();
        }
        if(s[a].size()>0){
            if(s[a].top()==b){
                continue;
            }else{
                ans++;
                s[a].push(b);
            }
        }else{
            ans++;
            s[a].push(b);
        }
    }cout<<ans;
    return 0;
}

希望通过,谢谢!