第五屆新疆省ACM-ICPC程式設計競賽 -- 大吉大利
阿新 • • 發佈:2020-12-09
連結: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; }