挂在样例求助
查看原帖
挂在样例求助
292069
洋本羊楼主2021/10/2 08:53
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<queue>
#include<vector>
#include<bitset>
#include<set>
#include<map>
using namespace std;
int n,m,t[505],dp[10005][10005],ans,zd;//dp[i][j]表示第i个人所在的公交车第j分钟出发使前i个人的等待时间的最小值 
int main()
{
	cin>>n>>m;
	for(int i=1;i<=n;i++)
	{
		cin>>t[i];
	}
	sort(t+1,t+1+n);
	memset(dp,150,sizeof(dp));
	zd=t[n];
	for(int i=t[1];i<=zd+m;i++)
	{
		dp[1][i]=i-t[1];
	}
	for(int i=2;i<=n;i++)
	{
		for(int j=t[i];j<=zd+m;j++)
		{
			dp[i][j]=min(dp[i][j],dp[i-1][j]+j-t[i]);
		}
		for(int j=t[i];j<=zd+m;j++)
		{
			for(int k=t[i-1];k<=j-m;k++)
			{
				dp[i][j]=min(dp[i][j],dp[i-1][k]+j-t[i]);
			}
		}
	}
	int ans=0x7fffffff;
	for(int i=n;i<=zd+m;i++)
	{
		ans=min(ans,dp[n][i]);
	}
	cout<<ans;
	return 0;
}

第一个样例输出了一个负数

2021/10/2 08:53
加载中...