嘘~ 正在从服务器偷取页面 . . .

CCF公共钥匙盒---优先队列真的很棒!


CCF-201709-2

下面都不会了

我们先来看一下题目

1
2

解题思路

你不要看着题目这样,好像要考虑很多东西,优先队列就是干这个的,给个排序规则自动排序,而这个题我们要对时间排序,先来后到,然后还取,先还都取,同时还,小号先还。
优先队列,冲!

代码

#include<iostream>
#include<queue>
using namespace std;
struct node{
    char op;
    int time;
    int num;
    bool operator <(const node a)const{
      if(a.time!=time) return a.time<time;
      else if(a.op!=op) return a.op>op;
      else return a.num<num;
    }
};
const int maxn=1000;
int ans[maxn+1];
int main(){
    priority_queue<node> q;
    node t;
    int n,k;
    cin>>n>>k;
    for(int i=0;i<=n;i++){
      ans[i]=i;
    }
    while(k--){
      int w,s,c;
      cin>>w>>s>>c;
      t.op='G';
      t.num=w;
      t.time=s;
      q.push(t);
      t.op='R';
      t.time=s+c;
      q.push(t);
    }
    while(!q.empty()){
      t=q.top();
      q.pop();
      if(t.op=='G'){
          for(int i=1;i<=n;i++){
            if(ans[i]==t.num) {
                ans[i]=0;break;
            }
          }
      }else{
          for(int i=1;i<=n;i++){
            if(ans[i]==0){
                ans[i]=t.num;break;
            }
          }
      }
    }
    for(int i=1;i<=n;i++)
      cout<<ans[i]<<" ";
    return 0;
}

优先队列priority_queue的API

queue-API


版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 梦想成为假面骑士的司祎同学 !
赏
评论
评论
 上一篇
CCF小明放学---震惊,小明放学竟用一维数学模型解决! CCF小明放学---震惊,小明放学竟用一维数学模型解决!
CCF-201812-2 我们先来看一下题目 怎么个一维数学模型呢? 代码#include<iostream> #define ll long long using namespace std; int main(){ int
2020-09-04
下一篇 
CCF字符串匹配---String::find()&& tolower() CCF字符串匹配---String::find()&& tolower()
CCF-201409-3 我们先来看一下题目怎么说同学们看完题目就要说我了,你好蔡哦!题目确实不难,主要是介绍一个find()和tolower()和toupper()函数 代码#include<iostream> #include&l
2020-09-04
  目录