求高人指点
查看原帖
求高人指点
1625517
yijingbo楼主2024/12/27 16:22
#include "bits/stdc++.h"
using namespace std;
int n, m;
__int128 ans;
__int128 a[85][85], dp[85][85];
inline void read(__int128 &s){
    s = 0;
    char c = ' ';
    while(c > '9' || c < '0') c = getchar();
    while(c >= '0' && c <= '9'){
        s = s * 10 + c - '0';
        c = getchar();
    }
}
inline void print(__int128 x){
    if(x>9) print(x/10);
    putchar(x % 10 + '0');
}
__int128 find(__int128 g[]){
	for (int i = 1; i <= n; i++)
		for (int j = 1; j <= m; j++)
			dp[i][j] = 0;
	for (int len = 0; len <= m; len++)
		for (int i = 1; i + len <= m; i++)
			dp[i][i + len] = max(2 * (dp[i + 1][i + len] + g[i]), 2 * (dp[i][i + len - 1] + g[i + len]));
	return dp[1][m];
}
int main(){
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	cin >> n >> m;
	for (int i = 1; i <= n; i++)
		for (int j = 1; j <= m; j++)
			read(a[i][j]);
	for (int k = 1; k <= n; k++)
		ans += find(a[k]);
	print(ans);
	return 0;
}
2024/12/27 16:22
加载中...