就过了2个点,区间DP求助
查看原帖
就过了2个点,区间DP求助
947873
RedWen_shuo楼主2024/7/21 08:47

马应该不是很疯

#include<bits/stdc++.h>
#define ll long long
using namespace std;
template<typename T> void re(T&x){
	x = 0; char c; int sign = 1;
	do{c = getchar(); if (c == '-') sign = -1;}while(!isdigit(c));
	do{x = x * 10 + c - '0'; c = getchar();}while(isdigit(c));
	x *= sign;
}
const int N = 3e3 + 1000;
int n;
ll v[N];
ll f[N][N];
int main(){
	re(n);
	for (int i = 1; i <= n; i ++){
		re(v[i]); f[i][i] = v[i] * n;
	}
	for (int i = n; i >= 1; i --){
		for (int j = i + 1; j <= n; j ++){
			f[i][j] = max(f[i + 1][j] + i * v[i], f[i][j - 1] + i * v[j]);
		}
	}
	printf("%lld", f[1][n]);
	return 0;
}
2024/7/21 08:47
加载中...