• CodeForces 681C Heap Operations (模拟题,优先队列)


    题意:给定 n 个按顺序的命令,但是可能有的命令不全,让你补全所有的命令,并且要求让总数最少。

    析:没什么好说的,直接用优先队列模拟就行,insert,直接放入就行了,removeMin,就得判断一下队列是不是空的,然后再考虑getMin,这个是不是对应的值,如果队列中首元素比它大,那么就加上一个,

    如果相等直接取出,如果小于就不断取队列中最小元素。

    代码如下:

    #include <bits/stdc++.h>
    
    using namespace std;
    char s[15], t[30];
    vector<string> ans;
    
    int main(){
        int n, x;
        while(cin >> n){
            ans.clear();
            priority_queue<int, vector<int>, greater<int> > q;
            for(int i = 0; i < n; ++i){
                scanf("%s", s);
    
                if(s[0] == 'i'){
                    scanf("%d", &x);
                    sprintf(t, "insert %d", x);
                    ans.push_back(string(t));
                    q.push(x);
                }
                else if(s[0] == 'r'){
                    if(q.empty()){
                        ans.push_back("insert 1");
                        q.push(1);
                    }
                    ans.push_back("removeMin");
                    q.pop();
                }
                else{
                    scanf("%d", &x);
                    while(true){
                        if(q.empty() || q.top() > x){
                            q.push(x);
                            sprintf(t, "insert %d", x);
                            ans.push_back(string(t));
                        }
                        else if(q.top() == x){  break; }
                        else{
                            ans.push_back("removeMin");
                            q.pop();
                        }
                    }
                    sprintf(t, "getMin %d", x);
                    ans.push_back(string(t));
                }
            }
            printf("%d
    ", ans.size());
            for(int i = 0; i < ans.size(); ++i)
                cout << ans[i] << endl;
        }
        return 0;
    }
    
  • 相关阅读:
    vue 组件通信(全)
    clickoutside 代码实现
    reset css 样式重置
    vue computed 无法deep的问题
    sessionStorage的总结
    Windows系统maven安装配置
    Windows系统JDK安装配置
    开篇
    JIT即时编译器
    CLR基础
  • 原文地址:https://www.cnblogs.com/dwtfukgv/p/5655986.html
Copyright © 2020-2023  润新知