- 题意:
- 给出每条鱼烤制的时间,抓捕每条鱼的时间是相同的,问你最少花费多少时间才能将所有的鱼抓完并烤完。
- 题解:
- 贪心策略,就是要让自己的空闲时间越小越好,处理好每个烤鱼的时间,排序完后直接相加就好了,确实是想复杂了,贪心策略越简练越容易a,想麻烦可就事大了。
- 代码:
#include <bits/stdc++.h> using namespace std; #define ll long long struct node{ ll x,k; }a[100010]; bool cmp(node p1,node p2) { return p1.k < p2.k; } ll min(ll x,ll y) { return x<y?x:y; } int main() { int t; scanf("%d",&t); while(t--) { ll n,m; scanf("%lld %lld",&n,&m); ll now = n-1; for(int i=1;i<=n;i++) { scanf("%lld",&a[i].x); int d = a[i].x/m; d = min(d,now); now -= d; a[i].k = a[i].x - d*m; } sort(a+1,a+1+n,cmp); ll ans = n*m; for(int i=1;i<=n-now;i++) { ans += a[i].k; } cout<<ans<<endl; } return 0; }