1. 程式人生 > 實用技巧 >第五屆新疆省ACM-ICPC程式設計競賽 -- 大吉大利

第五屆新疆省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; }