10分蒟蒻一维dp求助!
查看原帖
10分蒟蒻一维dp求助!
558908
Ou_der楼主2023/9/30 10:41

惨不忍睹(O2)

#include<bits/stdc++.h>
using namespace std;
int i,j,n,m,stu[505],dp[105],in_bus,cnt;
int wait_time(int t)
{
	cnt=0;
	int i,sum=0;
	for(i=t+1;i<n;i++)
		if(stu[i]<stu[t]+m)
			sum+=(stu[t]+m)-stu[i],cnt++;
		else
			break;
	return sum;
}
int main(){
	
	scanf("%d %d",&n,&m);
	for(i=0;i<n;i++)
		scanf("%d",&stu[i]);
	sort(stu,stu+n);
	
	in_bus=1,dp[0]=0;
	for(i=1;i<n;i++)
	{
		if(in_bus*(stu[i]-stu[i-1])<wait_time(i-1))
			dp[i]=in_bus*(stu[i]-stu[i-1])+dp[i-1],in_bus++;
		else
			dp[i]=wait_time(i-1)+dp[i-1],in_bus=max(1,cnt);
	}
	printf("%d",dp[n-1]);
	
	return 0;
}
2023/9/30 10:41
加载中...