[CCPC2019 ONLINE]H Fishing Master
Posted greenduck
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[CCPC2019 ONLINE]H Fishing Master相关的知识,希望对你有一定的参考价值。
题意
http://acm.hdu.edu.cn/showproblem.php?pid=6709
思考
先考虑所有鱼的烹饪时间小于k的情况。将T从大到小排序后,煮一条鱼相当于将其时间补齐至k。
由于鱼的烹饪时间会大于等于k,那么,最优解一定不会出现鱼不够煮的情况。在煮鱼期间,可以钓到$\fract_ik$条鱼,最后要补齐的鱼的数量有n-cnt-1条。-1是因为最开始没有鱼。
代码
1 #include<bits/stdc++.h> 2 using namespace std; 3 typedef long long int ll; 4 const int maxn=1E5+5; 5 int T; 6 ll n,k; 7 ll t[maxn]; 8 bool cmp(ll x,ll y) 9 10 return x>y; 11 12 void solve() 13 14 cin>>n>>k; 15 ll cnt=0,ans=0; 16 for(int i=1;i<=n;++i) 17 18 cin>>t[i]; 19 ans+=t[i]; 20 cnt+=t[i]/k; 21 t[i]%=k; 22 23 cnt=min(cnt,n); 24 sort(t+1,t+n+1,cmp); 25 for(int i=1;i<=n-cnt-1;++i) 26 ans+=k-t[i]; 27 cout<<ans+k<<endl; 28 29 int main() 30 31 ios::sync_with_stdio(false); 32 cin>>T; 33 while(T--) 34 solve(); 35 return 0; 36
以上是关于[CCPC2019 ONLINE]H Fishing Master的主要内容,如果未能解决你的问题,请参考以下文章