zoukankan      html  css  js  c++  java
  • CoderForce 141C-Queue (贪心+构造)

    题目大意:一个队伍,每个人只记得前面比他高的人的个数x。现在将队伍散开,问能否构造出一支满足条件的队伍,如果能,再给每个人一个满足题意的身高。

    题目分析:一个一个排,x越少越先排,如果x比已经排好的人数大,那么无解。否则,将这个人放到已经排好的队伍中的第x+1个位置上去,并赋予一个合适的身高,使得前x个人都比他高。

    代码如下:

    # include<iostream>
    # include<cstdio>
    # include<queue>
    # include<string>
    # include<algorithm>
    using namespace std;
    
    struct People
    {
        string name;
        int num;
        People(string p,int a):name(p),num(a){}
        bool operator < (const People &a) const{
            return num<a.num;
        }
    };
    int n;
    vector<People>v,ans;
    
    bool ok()
    {
        ans.clear();
        sort(v.begin(),v.end());
        for(int i=0;i<n;++i){
            if(v[i].num>i) return false;
            int k=v[i].num;
            if(k==0){
                ans.insert(ans.begin(),People(v[i].name,50001));
                continue;
            }
            int minn=ans[0].num;
            for(int j=1;j<k;++j) minn=min(ans[j].num,minn);
            ans.insert(ans.begin()+k,People(v[i].name,minn-1));
        }
        return true;
    }
    
    int main()
    {
        string p;
        int a;
        while(~scanf("%d",&n))
        {
            v.clear();
            for(int i=0;i<n;++i){
                cin>>p>>a;
                v.push_back(People(p,a));
            }
            if(!ok()) printf("-1
    ");
            else{
                for(int i=0;i<ans.size();++i)
                    cout<<ans[i].name<<' '<<ans[i].num<<endl;
            }
        }
        return 0;
    }
    

      

  • 相关阅读:
    UNIX网络编程总结三
    UNIX网络编程总结二
    UNIX网络编程总结一
    KVM
    nginx+flask+gevent+uwsgi实现websocket
    Hypervisor
    JBPM4入门——4.封装流程管理的工具类(JbpmUtil)
    JBPM4入门——3.JBPM4开发环境的搭建
    JBPM4入门——2.在eclipse中安装绘制jbpm流程图的插件
    JBPM4入门——1.jbpm简要介绍
  • 原文地址:https://www.cnblogs.com/20143605--pcx/p/5165473.html
Copyright © 2011-2022 走看看