80pts求助!
查看原帖
80pts求助!
648996
_orange_楼主2023/7/15 18:44
#include<bits/stdc++.h>
using namespace std;
int dp[101][101],n,k;
struct book{
	int w,h;
}b[101];
bool cmp(book a,book b){
	return a.h<b.h;
}
int main(){
	cin>>n>>k;
	for(int i=1;i<=n;i++){
		cin>>b[i].h>>b[i].w;
	}
	sort(b+1,b+n+1,cmp);
	for(int i=1;i<=n;i++){
		for(int j=0;j<=i-2&&j<=k;j++)dp[i][j]=0x3f3f3f3f;
	}
	dp[1][1]=dp[1][0]=0;
	dp[2][1]=dp[2][2]=0;dp[2][0]=abs(b[1].w-b[2].w);
	for(int i=3;i<=n;i++){
		for(int j=0;j<=i;j++){
			for(int l=1;i-l>0;l++){
				if(j+1>=l)dp[i][j]=min(dp[i][j],dp[i-l][j-l+1]+abs(b[i].w-b[i-l].w));
			}
		}
	}
	int ans=0x3f3f3f3f;
	for(int i=0;i<=k;i++)ans=min(ans,dp[n][i]);
	cout<<ans;
	return 0;
}

WA on #3#7

2023/7/15 18:44
加载中...