地址:http://acm.hdu.edu.cn/showproblem.php?pid=6709
思路:思维 比赛时思路有点乱,大佬博客https://www.cnblogs.com/wizarderror/p/11405882.html
其实我们可以对煮鱼时间考虑,由于所有的鱼都需要煮,因此煮的时间总和不变,那么只要考虑如何将钓鱼时间缩短,即煮鱼的同时钓鱼,因此先算煮鱼时间段有多少个整的钓鱼时间,在将剩下的钓鱼时间和煮鱼时间长的放在一起即可
Code:
/*
http://acm.hdu.edu.cn/showproblem.php?pid=6709
Fishing Master
煮鱼时间不变
*/
#include<iostream>
#include<algorithm>
using namespace std;
typedef long long LL;
const int MAX_N=1e5+5;
int T;
LL n,m;
int a[MAX_N];
int main()
{
ios::sync_with_stdio(false);
cin>>T;
while(T--){
cin>>n>>m;
LL res=m,t=0;
for(int i=0;i<n;++i)
{
cin>>a[i];
res+=a[i]; t+=a[i]/m;
a[i]%=m;
}
sort(a,a+n);
t=n-1-t;
for(int i=0;i<t;++i)
res+=m-a[n-i-1];
cout<<res<<endl;
}
return 0;
}