7月23日:小红书提前批笔试第三题

没投小红书提前批,下来做了下第三题(第一题签到题;第二题没看,大家说看不懂题意),时间复杂度 O(n),塔子哥 OJ 上提交 AC

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner cin = new Scanner(System.in);
        int t = cin.nextInt();
        while (t-- > 0) {
            int n = cin.nextInt();
            long v = cin.nextLong();
            long[] nums = new long[n];
            for (int i = 0; i < n; i++) {
                nums[i] = cin.nextLong();
            }

            // dp[0][j]: 不强化 nums[0] ~ nums[j] 的子序和
            // dp[1][j]: 强化 nums[0] ~ nums[j] 中的某一个的子序和,又分为强化 nums[j] 和 不强化 nums[j]
            long[][] dp = new long[2][n];
            dp[0][0] = nums[0];
            dp[1][0] = v;
            long maxSum = Math.max(dp[0][0], dp[1][0]);
            for (int j = 1; j < n; j++) {
                // 不强化时 nums[0] ~ nums[j] 的子序和
                dp[0][j] = Math.max(dp[0][j - 1] + nums[j], nums[j]);
                // 强化 nums[j]:Math.max(dp[0][j - 1] + v, v)
                // 不强化 nums[j],强化 nums[0] ~ nums[j-1] 中的某一个,即 dp[1][j - 1]:dp[1][j - 1] + nums[j]
                dp[1][j] = Math.max(Math.max(dp[0][j - 1] + v, v), dp[1][j - 1] + nums[j]);
                maxSum = Math.max(maxSum, Math.max(dp[0][j], dp[1][j]));
            }
            System.out.println(maxSum);
        }
    }
}

#提前批简历挂麻了怎么办##小红书信息集散地#
全部评论
能不能给个塔子哥题目链接
1 回复 分享
发布于 2023-08-07 19:09 北京

相关推荐

09-19 19:43
已编辑
广东工业大学 golang
zizi哦:很牛了,稳大厂给几点建议:一、想被稳的问题,关键点,可以加深一点,一眼看过去全是文字,没事干容易抓不住重点;二、第一个开源项目很多人 star,这是一个证明你牛逼的证据,建议放在项目背景,开头就是这句话,背景到结果,并且重点标注;三、个人技能可以放后,没什么把握的可以不写上去,比如你列了这么多微服务中间件,你确定自己真的理解底层吗?如果不熟悉,可以表述为熟悉微服务体系开发,如 xxx 中间件;四、项目很多描述在讲述架构,有没有自己觉得亮点的设计,体现不出你解决问题的过程和思考。
如何写一份好简历
点赞 评论 收藏
分享
笑着秋招😊:我一直认为努力有回报是一件很幸福很幸福的事情,恭喜你
点赞 评论 收藏
分享
评论
2
4
分享

创作者周榜

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