首页 > Windows开发 > 详细

AcWing 3499. 序列最大收益

时间:2021-05-13 10:09:19      阅读:17      评论:0      收藏:0      [点我收藏+]
#include <iostream>
#include <cstring>
#include <algorithm>

using namespace std;

const int N = 210;

int n, k, m;
int a[N], w[N][N];
int f[N][N];

int main()
{
    scanf("%d%d%d", &n, &k, &m);
    for (int i = 1; i <= m; i ++ ) scanf("%d", &a[i]);
    for (int i = 1; i <= n; i ++ )
        for (int j = 1; j <= n; j ++ )
            scanf("%d", &w[i][j]);

    memset(f, -0x3f, sizeof f);
    f[1][0] = 0;
    for (int i = 2; i <= m; i ++ )
        for (int j = 0; j <= k; 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 i = 0; i <= k; i ++ )
        res = max(res, f[m][i]);

    printf("%d\n", res);
    return 0;
}

作者:yxc

链接:https://www.acwing.com/problem/content/3502/

来源:AcWing

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

AcWing 3499. 序列最大收益

原文:https://www.cnblogs.com/qq1415584788/p/14762692.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!