zoukankan      html  css  js  c++  java
  • (hdu 5437)

    1.Alisha’s Party

       优先队列模拟,共k个人,每个人有一个价值,m次进入,每次价值最大的进去,价值相同id小的先进去,a b前a个没进去的人进去b个,不够b个,都进去,m次操作后,剩下的都进去,最后输出查询的第i个进去的人的名字

      需要注意的是,m是乱序给的,需要按照a进行排序

      

    #include<bits/stdc++.h>
    using namespace std;
    const int maxn=150005;
    char name[maxn][205];
    typedef pair<int,int> dl;
    dl pt[maxn],px[maxn];
    int ans[maxn],T[maxn],k,m,Q,u,v;
    
    struct node{
        int id,val;
        node(int a=0,int b=0):id(a),val(b){}
        bool operator < (const node& x)const{
            if(x.val==val)
              return x.id<id;
            return x.val>val;
        }
    };
    
    void input(){
        scanf("%d%d%d",&k,&m,&Q);
        for(int i=1;i<=k;i++){
            scanf("%s%d",name[i],&u);
            pt[i]=make_pair(i,u);
        }
        for(int i=1;i<=m;i++){
            scanf("%d%d",&u,&v);
            px[i]=make_pair(u,v);
        }
        for(int i=0;i<Q;i++)
          scanf("%d",T+i);
        sort(px+1,px+1+m);
    }
    priority_queue<node> q;
    
    void solve(){
        while(!q.empty())q.pop();
        int cnt1=0,cnt2=0;
        for(int i=1;i<=m;i++){
            while(cnt1<px[i].first){
                cnt1++;
                q.push(node(pt[cnt1].first,pt[cnt1].second));
            }
            int w=cnt2+px[i].second;
            while(cnt2<w&&!q.empty()){
                ++cnt2;
                node tmp=q.top();q.pop();
                ans[cnt2]=tmp.id;
            }
        }
        for(int i=cnt1+1;i<=k;i++)
          q.push(node(pt[i].first,pt[i].second));
        while(!q.empty()){
            ++cnt2;
            node tmp=q.top();q.pop();
            ans[cnt2]=tmp.id;
        }
        bool ok=0;
        for(int i=0;i<Q;i++){
            if(ok)putchar(' ');
            else ok=1;
            printf("%s",name[ans[T[i]]]);
        }
        puts("");
    }
    
    int main(){
        int t;
        scanf("%d",&t);
        while(t--){
            input();
            solve();
        }
        return 0;
    }
  • 相关阅读:
    LeetCode278. 第一个错误的版本
    LeetCode275. H 指数 II
    LeetCode274. H 指数
    LeetCode273. 整数转换英文表示
    LeetCode268. 缺失数字
    LeetCode264. 丑数 II
    LeetCode263. 丑数
    关于解决Chrome新版本中cookie跨域携带和samesite的问题处理
    java将list转为树形结构的方法
    Python pycharm selenium hyrobot 学习中遇到的问题汇总2
  • 原文地址:https://www.cnblogs.com/jihe/p/5724841.html
Copyright © 2011-2022 走看看