ABC415E玄关求调
  • 板块学术版
  • 楼主shellyang2023
  • 当前回复0
  • 已保存回复0
  • 发布时间2025/7/21 12:38
  • 上次更新2025/7/21 16:38:16
查看原帖
ABC415E玄关求调
1032105
shellyang2023楼主2025/7/21 12:38

神秘DP求调:

#include<bits/stdc++.h>
#define int long long 
using namespace std;
int n,m;
signed main () {
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	cin>>n>>m;
	int arr[n+5][m+5],brr[n+m+5],dp[n+5][m+5],jl[n+5][m+5];
	memset(jl,0,sizeof(jl));
	memset(dp,0,sizeof(dp));
	for(int i=1;i<=n;i++) {
		for(int j=1;j<=m;j++) {
			cin>>arr[i][j];
		}
	}
	for(int i=1;i<=n+m-1;i++) {
		cin>>brr[i];
	}
	for(int i=1;i<=n;i++) {
		for(int j=1;j<=m;j++) {
			int tmp1=jl[i-1][j]+brr[i+j-1]-arr[i][j];
			int tmp2=jl[i][j-1]+brr[i+j-1]-arr[i][j];
			int tmp3=max(dp[i-1][j],tmp1);
			int tmp4=max(dp[i][j-1],tmp2);
			if(i==1&&j==1) {
				dp[i][j]=brr[i+j-1]-arr[i][j];
				jl[i][j]=brr[i+j-1]-arr[i][j];
			}else if(i==1) {
				dp[i][j]=tmp4;
				jl[i][j]=tmp2;
			}else if(j==1) {
				dp[i][j]=tmp3;
				jl[i][j]=tmp1;
			}else if(tmp3<tmp4) {
				dp[i][j]=tmp3;
				jl[i][j]=tmp1;
			}else if(tmp3>tmp4) {
				dp[i][j]=tmp4;
				jl[i][j]=tmp2;
			}else if(tmp1<tmp2) {
				dp[i][j]=tmp3;
				jl[i][j]=tmp1;
			}else {
				dp[i][j]=tmp4;
				jl[i][j]=tmp2;
			}
		}
	}
	cout<<max(dp[n][m],0ll);
	return 0;
}
//不MLX


2025/7/21 12:38
加载中...