HJ137 乘之

  • 题目
  • 题解(6)
  • 讨论(7)
  • 排行

较难 通过率:33.95% 时间限制:1秒 空间限制:1024M

知识点模拟

校招时部分企业笔试将禁止编程题跳出页面,为提前适应,练习时请使用在线自测,而非本地IDE。

描述

对于给定的由 nn 个整数组成的数组 {a1,a2,...,an}{a1​,a2​,...,an​},小龙和小蛇借助于此数组进行游戏。

游戏步骤如下:

1. 1.​小龙选择一个非空区间 [a,b][a,b];

2. 2.​小蛇选择一个非空区间 [c,d][c,d];

3. 3.​将选中的区间中的全部元素均乘上 kk,得到数组 a′a′;

游戏只进行一轮,三个步骤结束后立即停止。

小龙想要让数组 a′a′ 的元素之和尽可能大,小蛇想要让数组 a′a′ 的元素之和尽可能小。假设双方都采取的是最优策略,请你计算操作后得到的数组 a′a′ 的元素之和。

请注意,区间 [a,b][a,b] 和 [c,d][c,d] 可以相交,但只结算一次,即若某一个位置被小龙和小蛇同时选中,依旧只乘一次。

输入描述:

每个测试文件均包含多组测试数据。第一行输入一个整数 T(1≦T≦100)T(1≦T≦100) 代表数据组数,每组测试数据描述如下:

第一行输入两个整数 n,k(1≦n≦105; −100≦k≦100)n,k(1≦n≦105; −100≦k≦100) 代表数组中的元素数量、乘数。

第二行输入 nn 个整数 a1,a2,...,an(−106≦ai≦106)a1​,a2​,...,an​(−106≦ai​≦106) 代表数组元素。

除此之外,保证单个测试文件的 nn 之和不超过 2×1052×105。

输出描述:

对于每一组测试数据,新起一行。输出一个整数,代表操作后数组 a′a′ 的元素之和。

示例1

输入:

复制代码
3
2 4
1 1
6 0
1 1 4 5 1 4
4 -1
-2 1 -10 3

复制输出:

复制代码
8
0
8

复制说明:

复制代码
对于第一组测试数据,小龙的最优策略是选择区间 [1,2][1,2],一旦这么做了,无论小蛇选择的区间是什么,都不会影响最终答案。
对于第三组测试数据,其中一种最优策略为:龙选择区间 [1,3][1,3],小蛇选择区间 [4,4][4,4]。
cpp 复制代码
#include <iostream>
#include <vector>
using namespace std;

void solve(){
    int n, k;
    cin >> n >> k;
    vector<int> a(n);
    long long sum = 0;
    for(auto& num : a){
        cin >> num;
        sum += num;
    }
    cout << sum * k << endl;

}

int main() {
    int T;
    cin >> T;
    while(T--){
        solve();
    }

    return 0;
}
// 64 位输出请用 printf("%lld")
相关推荐
wuweijianlove2 小时前
算法性能的渐近与非渐近行为对比的技术4
算法
研究点啥好呢2 小时前
Github热门项目推荐 | 创建你的像素风格!
c++·python·node.js·github·开源软件
_dindong2 小时前
cf1091div2 C.Grid Covering(数论)
c++·算法
AI成长日志2 小时前
【Agentic RL】1.1 什么是Agentic RL:从传统RL到智能体学习
人工智能·学习·算法
沫璃染墨2 小时前
C++ string 从入门到精通:构造、迭代器、容量接口全解析
c语言·开发语言·c++
黎阳之光2 小时前
黎阳之光:视频孪生领跑者,铸就中国数字科技全球竞争力
大数据·人工智能·算法·安全·数字孪生
skywalker_112 小时前
力扣hot100-3(最长连续序列),4(移动零)
数据结构·算法·leetcode
6Hzlia2 小时前
【Hot 100 刷题计划】 LeetCode 17. 电话号码的字母组合 | C++ 回溯算法经典模板
c++·算法·leetcode
wfbcg3 小时前
每日算法练习:LeetCode 209. 长度最小的子数组 ✅
算法·leetcode·职场和发展
_日拱一卒3 小时前
LeetCode:除了自身以外数组的乘积
数据结构·算法·leetcode