当前位置: 首页 > news >正文

涨价

我们有 n 个物品,每个物品有一个初始价值 v_i。可以进行 k 次涨价操作,每次操作可以选择任意一个物品,将其价值平方(即 x = x * x),但每个物品只能被涨价一次。然后有 m 次询问,每次询问给定 p 个物品的编号,要求计算这 p 个物品在最优涨价操作后的最大总价值。

输入格式

  1. 第一行:两个整数 n 和 k,分别表示物品数量和涨价次数。

  2. 第二行:n 个整数,表示每个物品的初始价值 v_1, v_2, ..., v_n

  3. 第三行:一个整数 m,表示询问次数。

  4. 接下来的 m 行:每行一个整数 p,表示询问前 p 个物品的总价值(即 v[0], v[1], ..., v[p-1])。

输出格式

对于每个询问 p,输出前 p 个物品在最优涨价操作后的最大总价值。

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;int main() {int n, k;cin >> n >> k;vector<long long> v(n);for (int i = 0; i < n; ++i) {cin >> v[i];}// 按价值从大到小排序sort(v.begin(), v.end(), greater<long long>());// 对前k个物品进行涨价操作for (int i = 0; i < min(k, n); ++i) {v[i] = v[i] * v[i];}// 构建前缀和数组vector<long long> prefix(n + 1, 0);for (int i = 1; i <= n; ++i) {prefix[i] = prefix[i - 1] + v[i - 1];}int m;cin >> m;while (m--) {int p;cin >> p;cout << prefix[p] << endl;}return 0;
}

 

http://www.sczhlp.com/news/8562/

相关文章:

  • 2.6多个函数(一个文件中包含两个函数)
  • Java的HelloWorld
  • 【优选算法】BFS解决拓扑排序 - 详解
  • 使用Rust操作Windows ACL:windows-acl库简介
  • ANR问题产生原理和分析思路总结
  • Markdown语法的用法
  • 第二十六篇
  • JDK的安装与卸载
  • 视频分割技术:方法、挑战与应用
  • 软工8.9
  • 《触龙说赵太后》
  • 第二十七天(补8.2)
  • P13680 [IAMOI R2] 未送出的花 做题记录
  • Debian 12(Bookworm)apt 包管理器 国内源配置
  • JDK、JRE和JVM
  • 8.9
  • 8-9
  • 可以赚钱的小游戏
  • 同时求最值(min 和 max)时如何把比较次数压到最少
  • 1.C++基础
  • uclamp 的桶化算法是什么?
  • 数论函数
  • 8月9号
  • 8月9日随笔
  • CF1404C Fixed Point Removal
  • 竞赛日记
  • 基本的DOS命令
  • vue2.6和vue2.7的差异是什么?
  • vscode使用region折叠任意想折叠的代码块
  • 第十五天