5-10WA求助
查看原帖
5-10WA求助
544549
KSCD_楼主2024/1/19 23:50
#include<iostream>
#include<algorithm>
#include<cmath>
#include<cstring> 
#include<cstdio> 
#include<queue>
#include<stack>
#include<map>
#include<vector>
#include<ctime> 
#define int long long
using namespace std;
const int N=3e3+10;
const int M=300+10; 
const int mins=-1e9;
const int maxs=1e9;
int a[N];
int f[N][M];
int dp[N][M];
int d[N][M];
int n,m;
signed main()
{	
//	freopen("a.in","r",stdin);
	cin>>n>>m;
	for(int i=1;i<=n;i++)
		cin>>a[i];
	for(int l=1;l<=n;l++) 
	{
		f[l][l]=0;
		for(int r=l+1;r<=n;r++) {
			f[l][r]=f[l][r-1]+a[r]-a[l+r>>1];
		}
	}
	sort(a+1,a+1+n);
	memset(dp,0x3f,sizeof(dp)); 
	dp[0][0]=0;
	for(int j=1;j<=m;j++) 
	{
		d[n+1][j]=n;
		for(int i=n;i>=1;i--) 
		{
			int minn=maxs,minid;
			for(int k=d[i][j-1];k<=d[i+1][j];k++) 
			{
				if(dp[k][j-1]+f[k+1][i]<minn) 
				{
					minn=dp[k][j-1]+f[k+1][i];
					minid=k;
				}
			}
			dp[i][j]=minn;
			d[i][j]=minid;
		}
	} 
	cout<<dp[n][m];
	return 0;
}

第五个点的数据不知道为什么输出了0

求大佬帮忙看一下问题

2024/1/19 23:50
加载中...