牛客訓練三:處女座的訓練(貪心)
阿新 • • 發佈:2019-01-26
ios lld 可能 space for gif ret 題解 tdi
題目鏈接:傳送門
思路:要求最後求出的時間盡可能的小,一開始我只想到了用排序分別討論ai和bi的大小,
後來發現結果與兩者都有關系,然後……就沒做出來。
後來看了題解,發現如果只要讓ai/bi盡可能大,就能保證所得到的時間是最小的,讓ai/bi
降序排序,然後貪心即可。
#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; const int maxn = 100100+10; typedef long long LL;View Codestruct Node{ LL ai,bi; }cur[maxn]; bool cmp(Node a,Node b) { return 1.0*a.bi/a.ai>1.0*b.bi/b.ai; } int main(void) { int n,i; while(~scanf("%d",&n)) { LL tp=0; for(i=0;i<n;i++) scanf("%lld%lld",&cur[i].ai,&cur[i].bi),tp+=cur[i].bi; sort(cur,cur+n,cmp); LL ans=0; for(i=0;i<n;i++) { tp=tp-cur[i].bi; ans+=tp*cur[i].ai; } printf("%lld\n",ans); } return 0; }
牛客訓練三:處女座的訓練(貪心)