QwQ萌新学DP,不知道哪里错了
  • 板块P1130 红牌
  • 楼主Howard123333
  • 当前回复1
  • 已保存回复1
  • 发布时间2022/7/8 20:08
  • 上次更新2023/10/27 21:27:00
查看原帖
QwQ萌新学DP,不知道哪里错了
608890
Howard123333楼主2022/7/8 20:08
//#include<windows.h>
#include<stdlib.h>
#include<iostream>
#include<cmath>
#include<algorithm>
#include<cstring>
#include<cstdio>
#include<queue>
#include<vector>
#define LL long long
#define re register
using namespace std;
const LL MAXN=2e3+10;
LL a[MAXN][MAXN];
LL ans,T,n;
LL dp[MAXN][MAXN];

//queue<int> q[MAXN];

int main() {
	std::ios::sync_with_stdio(false);
	ios::sync_with_stdio(false), cin.tie(0);
	//	system("pause");
	cin>>T>>n;
//	for(int i=0;i<MAXN;i++)
//		for(int j=1;j<MAXN;j++)
//			dp[i][j]=0x7fffffff;
	ans=0x7fffffff;
	for(int j=1; j<=n; j++) {
		for(int i=1; i<=T; i++) {
			cin>>a[j][i];
		}
	}
	for(int i=1;i<=n;i++)
	dp[i][1]=a[i][1];
	for(int i=1;i<=T-1;i++){
		for(int j=1;j<=n;j++){
			if(j==1) {
				dp[1][i+1]=dp[1][i]+a[1][i+1];
				dp[2][i+1]=dp[1][i]+a[2][i+1];
			}
			else {
				dp[1][i+1]=min(dp[1][i+1],dp[j][i]+a[1][i+1]);
				dp[j][i+1]=min(dp[j][i+1],dp[j][i]+a[j][i+1]);
				dp[j+1][i+1]=dp[j][i]+a[j+1][i+1];
			}
		}
	}
	for(int i=1;i<=n;i++)
	ans=min(ans,dp[i][T]);
	cout<<ans<<endl;
//	for(int i=1;i<=n;i++){
//		{
//			for(int j=1;j<=T;j++)
//			cout<<dp[i][j]<<' ';
//		}
//		cout<<endl;
//	}
	return 0;
}
2022/7/8 20:08
加载中...