商汤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,谁能说一下为什么?
#笔试题目##商汤科技#
全部评论

相关推荐

2024-12-29 11:08
湖南工业大学 Java
程序员牛肉:简历没什么大问题了。 而且不要再换项目了。三月份就开暑期实习了,现在都一月份了。实在来不及重新开一下项目了。把一个项目写完或许很快,但是把一个项目搞懂吃透并不简单。所以不要换项目了,把你简历上面的两个项目好好挖一挖吧。 具体 体现在:你能不能流利的说出你的项目的每一个功能点代码实现?你能不能说出在这块除了A技术之外,还有其他技术能够实现嘛?如果有其他技术能够实现,那你这块为什么选择了你当前用的这个技术?
投递牛客等公司
点赞 评论 收藏
分享
01-15 13:52
已编辑
河南大学 Java
六年要多久:标准头像,不吃香菜😂
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
02-14 11:10
点赞 评论 收藏
分享
评论
点赞
2
分享

创作者周榜

更多
牛客网
牛客企业服务