题解 | #E Problem#

A+B Problem

https://ac.nowcoder.com/acm/contest/120561/A

问题分析:

有一个包含 n 个方块的序列,每个方块上有一个数字。还有一个额外的万能方块,初始值为 k。

游戏规则:可以把万能方块插入到序列的最左边,同时最右边的方块会被移出序列,变成新的万能方块。可以执行任意多次操作(包括0次)。

目的:找到一个最优的操作次数,使得最终序列最左边的数字加上最终万能方块的数字的和最大。

总共有三种情况:操作0次,操作1次,操作两次及以上

1.如果不动,就是a[0]+k

2.如果动一次,就是a[n-1]+k

3.如果动两次及以上,就是相邻两个数的和

代码实现:

#include<bits/stdc++.h>

using namespace std;

int main() {

int T;
cin >> T;
for(int i=0;i<T;i++)
{
    int n,k;
    cin >> n >> k;
    vector<int>a(n);
    for(int j=0;j<n;j++)
    {
        cin >> a[j];
    }
    int numx=a[0]+k;
    numx=max(numx,a[n-1]+k);
    int num=-20000000;
    for(int j=1;j<n;j++)
    {
        num=max(num,a[j]+a[j-1]);
    }
    numx=max(numx,num);
    cout << numx << '\n';
}
return 0;

}

时间复杂度为O(n)

全部评论

相关推荐

不愿透露姓名的神秘牛友
昨天 17:04
点赞 评论 收藏
分享
owwhy:难,技术栈在嵌入式这块显得非常浅,并且简历有大问题。教育经历浓缩成两行就行了,写什么主修课程,说的不好听这块没人在意,自我评价删了,项目写详细点,最终简历缩成一页。相关技能怎么说呢,有点差了,还写成这么多行
投了多少份简历才上岸
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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