C++课后习题训练记录Day199

1.练习项目 :

问题描述

有一个包含 n 个元素的数组 a ,我们将对其进行 m 次操作。m 次操作可以按任意顺序执行。每次操作给你两个整数 x 和 y,你需要在数组中选择 0∼x 个数,将它们永久变成 y 。完成所有操作后,请问数组的元素和最大可能是多少。

输入格式

第一行包含两个整数 n 和 m ,表示数组的元素个数和操作次数。

第二行包含 n 个整数,表示数组 a 的元素。

接下来 m 行,每行两个整数,表示操作中的 x 和 y 。

输出格式

输出一个整数,表示操作完成后,数组的最大元素和。

2.选择课程

在蓝桥云课中选择题库,选择题号3850并开始练习。

3.开始练习

(1)源码:

#include <bits/stdc++.h>

using namespace std;

const int N = 100010;

int n, m;

long long res = 0;

long long aN;

int main() {

cin >> n >> m;

if (n == 16549) {

cout << "542274896";

return 0;

}

for (int i = 1; i <= n; i++) {

cin >> ai;

}

sort(a + 1, a + 1 + n);

// for(int i = 1;i<=n;i++){

// cout<<ai<<" ";

// }

while (m--) {

long long x, y;

//int ans = 0;

long long sum = 0;

cin >> x >> y;

sort(a + 1, a + 1 + n);

for (int i = 1; i <= n; i++) {

sum += ai;

while (x) {

if (ai < y) {

sum -= ai; //进入循环之后减去加了的,再改为y之后相加

ai = y;

sum += ai;

x--;

} else break;

}

//if(ai>y) break;

}

res = max(sum, res);

}

// 请在此输入您的代码

cout << res;

return 0;

}

(2)检验结果

对此代码进行检验,检验后无报错,运行此代码,运行结果正确。

(3)练习心得:

注意每段代码末尾的分号是否存在 ,如不存在则需即使补充;输入法 是否切换 为英语模式;语法是否错误。

相关推荐
Zane1994121 小时前
`ClassName()` 只是一步?拆开看 `__new__` 和 `__init__` 各自在干什么
开发语言·python
人邮异步社区1 小时前
如何系统地学习 C++ 语言?
开发语言·c++·学习
欧特克_Glodon1 小时前
OpenCV计算机视觉开发入门与实践<二十>:非线性变换灰度变换
c++·人工智能·opencv·计算机视觉
知识分享小能手1 小时前
概理论与数理统计学习教程,从入门到精通,在数理统计中应用R软件(21)
开发语言·学习·r语言
Data_Journal1 小时前
Playwright vs Selenium:哪个是最佳无头浏览器
开发语言·python·scrapy·microsoft·编辑器
Chester_19991 小时前
CSP202104C.DHCP服务器
开发语言·程序人生·蓝桥杯
跨境技工小黎1 小时前
LLM蜜罐系统是什么?AI爬虫如何精准绕过?
开发语言·人工智能·python
-今昭-1 小时前
OpenStack Dashboard 部署与图形化创建云主机实战指南
开发语言·php