首页 > 试题广场 >

单帧操作

[编程题]单帧操作
  • 热度指数:940 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解

给定n个数字的序列,对位置i进行一次操作将使得都变成

特别的,对位置0进行操作将使得a_0a_1都变成max(a_0,a_1)
对位置n-1进行操作将使得都变成
并且操作过位置i之后,位置0到i都不能再操作

设最多可以操作次,最后得到的整个序列的总和最大可以是m_k

你需要求出m_1,m_2,...m_n

示例1

输入

5,[1,2,3,4,5]

输出

[18,21,22,22,22]

说明

输入:
n=5, 输入序列为[1,2,3,4,5]

[1,2,3,4,5]对应位置0,1,2,3,4
只能操作1次的时候,对位置1操作得到[3,3,3,4,5],或者对位置2操作可以得到[1,4,4,4,5],或者对位置3操作可以得到[1,2,5,5,5],都可以得m_1=18
只能操作2次的时候,按次序操作位置1和位置3可以得到[3,3,5,5,5],其他操作不会得到更优的结果,所以m_2=21
能操作3次以上的时候可以得到的最优序列为[3,4,5,5,5](依次操作位置1,位置2,位置3),所以m_3=22,m_4=22,m_5=22

备注:
头像 积极的防守者
发表于 2020-02-05 21:42:10
普通解法: 二进制枚举所有位置选或者不选,然后按顺序模拟操作,并更新相应的答案,时间复杂度,因为要开一个辅助数组来进行模拟操作,所以空间复杂度 vector<int> solve(int n, vector<int> a){ assert(n <= 20); 展开全文
头像 Maokt
发表于 2021-08-02 11:50:13
算法思想一:暴力枚举 解题思路: 题目的主要信息: 给一串数组,每次找到一个位置进行一次操作:将该位置前后一个数及本身改为三者中的最大值 一共进行n次操作,每次操作需要找到改变后使数组和最大那个位置来改变 利用二进制掩码的特性,枚举所有位置选择或是不选择的组合(相当于n次操作,选择 展开全文
头像 牛一霸
发表于 2021-08-07 09:10:15
题目:单帧操作描述:给定n个数字的序列a0,a1,…an−1,对位置i进行一次操作将使得ai−1,ai,ai+1都变成max(ai−1,ai,ai+1),特别的,对位置0进行操作将使得a0和a1都变成max(a0,a1),对位置n-1进行操作将使得an−2和an−1都变成max(an−2,an−1) 展开全文
头像 摸鱼学大师
发表于 2021-07-30 17:07:39
思路: 题目的主要信息: 给一串数组,每次找到一个位置进行一次操作:将该位置前后一个数及本身改为三者中的最大值 一共进行n次操作,每次操作需要找到改变后使数组和最大那个位置来改变 方法一:暴力解法(超时)具体做法:利用二进制掩码的特性,枚举所有位置选择或是不选择的组合(相当于n次操作,选择的位置 展开全文
头像 球球了给孩子一个offer吧
发表于 2021-08-06 16:02:44
题目:给定n个数字的序列,对位置i进行一次操作将使得都变成特别的,对位置0进行操作将使得和都变成对位置进行操作将使得和都变成并且操作过位置i之后,位置0到i都不能再操作设最多可以操作k(k≤n)次,最后得到的整个序列的总和最大可以是你需要求出方法一:四维动态规划定义:表示第个位置进行第j次操作值为的 展开全文
头像 认认真真coding
发表于 2021-08-04 11:25:45
题目描述给定n个数字的序列a0,a1,…an−1,对位置i进行一次操作将使得ai−1,ai,ai+1都变成max(ai−1,ai,ai+1)特别的,对位置0进行操作将使得a0和a1都变成max(a0,a1)对位置n-1进行操作将使得an−2和an−1都变成max(an−2,an−1)并且操作过位置i 展开全文
头像 CroMarmot
发表于 2021-10-02 03:47:23
题意 长度为nnn的数组, 每次把相邻的三个数,都变为它们中的最大值,操作的下标从左向右 问,操作iii次后的数组的最大和, 其中iii从111取到nnn,给出不同iii对应的最大值。 n≤200n\leq 200n≤200 数组中每个数值111到200200200之间的整数 算法 深搜(TLE) 展开全文