AcWing 3499. 序列最大收益
原题链接
中等
作者:
ITNXD
,
2021-05-14 10:29:50
,
所有人可见
,
阅读 302
详细内容请查看注释
参考代码:
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
typedef long long LL;
const int N = 210;
int n, m, k, a[N], w[N][N], f[N][N];
int main(){
cin >> k >> m >> n;
for(int i = 1; i <= n; i ++) cin >> a[i];
for(int i = 1; i <= n; i ++)
for(int j = 1; j <= n; j ++)
cin >> w[i][j];
for(int i = 1; i <= n; i ++)
for(int j = 0; j <= m; j ++)
for(int u = 1; u < i; u ++)
if(j >= i - u - 1)
f[i][j] = max(f[i][j], f[u][j - (i - u - 1)] + w[a[u]][a[i]]);
int res = 0;
for(int j = 0; j <= m; j ++) res = max(res, f[n][j]);
cout << res << endl;
return 0;
}