zoukankan      html  css  js  c++  java
  • 第五届新疆省ACM-ICPC程序设计竞赛 -- 大吉大利

    链接:https://ac.nowcoder.com/acm/contest/911/I
    来源:牛客网

    思想:因为它针对是金币数比它多的人,所以就是一个优先队列的操作,每次都把金币比它多的人提出来,然后操作,完事了再塞到队列去!

             

    #include<bits/stdc++.h>
    using namespace std;
    struct node{
        int a , b;
    }nums[100005];
    bool operator<( node a, node b ){
         if(a.a == b.a) return a.b>b.b;
        return a.a<b.a;
    }
    priority_queue<node> q;
    int main()
    {
        int a ;
        cin>>a;
        int sum ;
        cin>>sum;
        int t = sum ;
        for(int i =  0 ; i < a-1 ; i++)
            cin>>nums[i].a;
        for(int i = 0 ;i < a-1 ; i++)
            cin>>nums[i].b;
        for(int i =0 ; i < a-1; i ++){
            q.push(nums[i]);
        }
        while(1){
            bool flog = false;
            node temp = q.top();
            q.pop();
            if(temp.a>=sum){
                flog = true;
                temp.a-=temp.b;
                sum--;
            }
            if(!flog)
                break;
            if(sum <= 0 )
                break;
            q.push(temp);
        }
        if(sum <=0)
            cout<<"-1"<<endl;
        else
            cout<<t-sum<<endl;
        return 0;
    }
  • 相关阅读:
    C语言I博客作业07
    C语言I博客作业06
    C语言I博客作业05
    C语言|博客作业04
    C语言|博客作业02
    第二周作业
    第一周作业
    学期总结
    作业01
    C语言I博客作业09
  • 原文地址:https://www.cnblogs.com/Li-ningning/p/14108821.html
Copyright © 2011-2022 走看看