代码:
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<vector>
using namespace std;
int dp[505];//dp[前几个人]
int t[505];
vector<int> bus_time;
int main(){
int n,m;
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++) scanf("%d",&t[i]);
sort(t+1,t+n+1);
int lastcur=1;
bus_time.push_back(0);
for(int i=1;i<=n;i++){
int bac=bus_time[bus_time.size()-1];
int a=max(bac,t[i]);
int b=max(bac+m,t[i]);
int a_wait=dp[lastcur-1];
for(int j=lastcur;j<=i;j++) a_wait+=a-t[j];
int b_wait=dp[i-1]+b-t[i];
if(a_wait<b_wait){
bus_time[bus_time.size()-1]=a;
dp[i]=a_wait;
}
else{
bus_time.push_back(b);
lastcur=i;
dp[i]=b_wait;
}
}
printf("%d",dp[n]);
return 0;
}
20分,剩下80分WA