# 题目
题目描述 小苯正在玩方块小游戏,游戏中有一排 𝑛 n 个方块,每个方块上都有一个数字,此外,他还有一个写着数字 𝑘 k 的万能方块,游戏过程如下。
小苯可以进行任意次(可以为 0 0 次)以下操作: ∙ ∙将万能方块从方块序列的最左侧插入,同时最右侧的第 𝑛 n 个方块会被挤出这一行,成为新的万能方块。 形式化地,记开始时的序列为 𝑎 1 ′ , 𝑎 2 ′ , … , 𝑎 𝑛 ′ a 1 ′ ,a 2 ′ ,…,a n ′ (初始时 𝑎 𝑖 ′
𝑎 𝑖 a i ′ =a i ),万能方块值为 𝑘 ′ k ′ (初始时 𝑘 ′
𝑘 k ′ =k),操作完成后序列变为 𝑘 ′ , 𝑎 1 ′ , … , 𝑎 𝑛 − 1 ′ k ′ ,a 1 ′ ,…,a n−1 ′ ,万能方块上的数字变为 𝑎 𝑛 ′ a n ′ ,其他方块保持相对顺序整体右移一位。
你的任务是计算出,按照最优方式经过若干次操作后,从左往右数第一个方块上的数字加上最终的万能方块上的数字的总和的最大值。
代码
#include <bits/stdc++.h> using namespace std;
int main() {
int t;
cin >> t;
while (t--) {
int n, k, max1 = INT_MIN;
cin >> n >> k;
deque num;
for (int i = 0; i < n; i++) {
int a;
cin >> a;
num.push_back(a);
}
int c = n+1;
while (c--) {
int sum = k + num.front();
int temp = num.front();
num.push_front(k);
k = num.back();
num.pop_back();
max1 = max(max1, sum);
}
cout << max1 << endl;
}
return 0;
}

京公网安备 11010502036488号