• FZU


    题目链接
      根据题意照做就行了,不过需要注意的一点是,当栈为空时(不论是初始状态还是经过pre),当前列表的歌曲是歌曲1,所以在摁next的时候会播放第二首歌曲。

    const int maxn = 1e5+10;
    stack<int> sk, clears;
    vector<int> ans;
    int main(void) {
        int t;
        scanf("%d", &t);
        while(t--) {
            int n, m;
            scanf("%d%d", &n, &m);
            int mm = m;
            while(mm--) {
                char od[6];
                scanf("%s", od);
                if (od[0]=='P'&&od[1]=='R') {
                    if (!sk.empty()) sk.pop();
                    if (sk.empty()) ans.push_back(1);
                    else ans.push_back(sk.top());
                }
                else if (od[0]=='N') {
                    int num;
                    if (sk.empty()) num = 2;
                    else num = sk.top()+1;
                    if (num>n) --num;
                    ans.push_back(num);
                    if (sk.empty() || sk.top()!=num) sk.push(num);
                }
                else {
                    int num;
                    scanf("%d", &num);
                    ans.push_back(num);
                    if (sk.empty() || sk.top()!=num) sk.push(num);
                }
            }
            for (int i = 0; i<m; ++i)
                printf("%d
    ", ans[i]);
            ans.clear();
            sk = clears;
        }
        return 0;
    }
    
  • 相关阅读:
    flink checkpoint机制的实现
    openjdk源码分析之AtomicLong
    cpp之宏和函数调用约定
    JNA 相关问题
    spark RDD
    最长连续序列
    买卖股票的最佳时机
    二叉树展开为链表
    不同的二叉搜索树
    柱状图中最大的矩形
  • 原文地址:https://www.cnblogs.com/shuitiangong/p/12577793.html
Copyright © 2020-2023  润新知