E...Question
  • 板块P1130 红牌
  • 楼主sLMxf
  • 当前回复3
  • 已保存回复3
  • 发布时间2023/1/25 21:55
  • 上次更新2023/10/24 03:05:11
查看原帖
E...Question
752953
sLMxf楼主2023/1/25 21:55
#include<bits/stdc++.h>
using namespace std;
long long n,m,dp[2001][2001],a[2001][2001];
int change(int x)
{
	if(x==1) return n;
	else return x-1;
}
int main()
{
	cin>>n>>m;
	swap(n,m);
	for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) cin>>a[i][j];
	for(int i=1;i<=m;i++)
		for(int j=1;j<=n;j++)
			dp[i][j]=min(dp[i-1][j],dp[i-1][change(j)])+a[i][j];
	long long ans=INT_MAX;
	for(int i=1;i<=n;i++)
		ans=min(ans,dp[m][i]);
	cout<<ans;
	return 0;
}

转移方程dpi,j=min(dpi1,j,dpi1,j1)+ai,jdp_{i,j}=min(dp_{i-1,j},dp{i-1,j-1})+a_{i,j}没错,那错哪了

2023/1/25 21:55
加载中...