商汤2D视觉第二题,股票利润题

#include <bits/stdc++.h>
using namespace std;
const int MAXN = 1e5 + 10;
const int INF = 0x3f3f3f3f;

int a[2][MAXN];
int dp[MAXN][5][5];

int main() {
    //freopen("in.txt", "r", stdin);
    int n, k, s, l;
    scanf("%d%d%d", &n, &k, &s);
    for (int i = 0; i < s; i++) {
        for (int j = 1; j <= n; j++) {
            scanf("%d", &a[i][j]);
        }
    }
    memset(dp, -INF, sizeof(dp));
    dp[n + 1][0][0] = 0;
    for (int i = n; i >= 1; i--) {
        for (int x = 0; x <= k; x++) {
            if (s == 1) l = 0;
            else l = k - x;
            for (int y = 0; y <= l; y++) {
                dp[i][x][y] = dp[i + 1][x][y];
                if (x + 1 + y <= k)
                    dp[i][x][y] = max(dp[i][x][y], dp[i + 1][x + 1][y] + a[0][i]);
                if (x - 1 >= 0)
                    dp[i][x][y] = max(dp[i][x][y], dp[i + 1][x - 1][y] - a[0][i]);
                if (s == 1) continue;
                if (x + y + 1 <= k)
                    dp[i][x][y] = max(dp[i][x][y], dp[i + 1][x][y + 1] + a[1][i]);
                if (y - 1 >= 0)
                    dp[i][x][y] = max(dp[i][x][y], dp[i + 1][x][y - 1] - a[1][i]);
            }
        }
    }
    int ans = 0;
    for (int x = 0; x <= k; x++) {
        if (s == 1) l = 0;
        else l = k - x;
        for (int y = 0; y <= l; y++) {
            ans = max(ans, dp[1][x][y]);
        }
    }
    printf("%d\n", ans * 100);
    return 0;
}

样例都过了,ac0,谁能说一下为什么?
#笔试题目##商汤科技#
全部评论

相关推荐

评论
点赞
2
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务