【16届蓝桥杯寒假刷题营】第2期DAY5

5.变变数组 - 蓝桥云课

给定一个长度为 n 的整数数组 A,A 中第 i 个元素为 Ai​(1≤i≤n),你只能在 A 中选择一个元素 a,将 A 中所有数值等于 a 的元素变为 a2,请问变化后 A 中所有元素和的最大为多少。

输入格式

输入共 2 行。

第一行包含一个整数 n,表示整数数组 A 中元素的个数。

第二行包含 n 个整数,表示整数数组 A 中各个元素的值。

输出格式

输出共一行,包含一个整数,表示变换后 A 中所有元素和的最大值。

样例输入

复制代码
5
-3 1 0 2 2

样例输出

复制代码
14

评测数据规模

对于所有评测数据,1≤n≤1e5,−1e4≤Ai​≤1e4。

思路如下:

相当于暴力,先计算未被改变的总和,之后再分别计算改变这个数的总和,求出最大。

代码如下:

复制代码
#include<iostream>
#include<algorithm>
#include<map>
using namespace std;
typedef long long ll;
const ll N = 1e5+10;
ll n; 
ll maxn = -1e9;
ll sum;
int main(void)
{
	map <int,int> mp;
	cin >> n;
	for(ll i = 1 ; i <= n ; i++)
	{
		ll x;
		cin >> x;
		mp[x]++;
		sum += x;//先计算未改变的总和 
	}
	for(auto it = mp.begin() ; it != mp.end() ; it++) 
	{
		ll key = it->first;
		ll num = it->second; 
		maxn = max(maxn,sum - num*key + num*key*key);
	}
	cout << maxn;
	return 0;
}
相关推荐
上去我就QWER1 小时前
Qt快捷键“魔法师”:QKeySequence
开发语言·c++·qt
将编程培养成爱好4 小时前
C++ 设计模式《外卖骑手状态系统》
c++·ui·设计模式·状态模式
猿太极4 小时前
设计模式学习(3)-行为型模式
c++·设计模式
cynicme5 小时前
力扣3228——将 1 移动到末尾的最大操作次数
算法·leetcode
熬了夜的程序员5 小时前
【LeetCode】109. 有序链表转换二叉搜索树
数据结构·算法·leetcode·链表·职场和发展·深度优先
随意起个昵称5 小时前
【递归】二进制字符串中的第K位
c++·算法
mjhcsp6 小时前
C++ 循环结构:控制程序重复执行的核心机制
开发语言·c++·算法
立志成为大牛的小牛6 小时前
数据结构——四十一、分块查找(索引顺序查找)(王道408)
数据结构·学习·程序人生·考研·算法
遇印记6 小时前
蓝桥java蜗牛
java·学习·蓝桥杯
xier_ran6 小时前
深度学习:RMSprop 优化算法详解
人工智能·深度学习·算法