蓝桥杯刷题day06——平均

1、题目描述

复制代码
有一个长度为n 的数组(n 是 10 的倍数),每个数ai都是区间 [0,9] 中的整数。
小明发现数组里每种数出现的次数不太平均,而更改第i 个数的代价为bi,
他想更改若干个数的值使得这10 种数出现的次数相等(都等于n/10),请问代价和最少为多少。

输入格式
输入的第一行包含一个正整数 n
接下来n 行,第i 行包含两个整数ai,bi,用一个空格分隔。

输出格式
输出一行包含一个正整数表示答案。

样例输入
10
1 1
1 2
1 3
2 4
2 5
2 6
3 7
3 8
3 9
4 10

样例输出
27

样例说明

只更改第 1,2,4,5,7,8 个数,需要花费代价 1+2+4+5+7+8=27。

2、解析

使得数组中每种数出现次数相等的最小代价

  1. 读取n和计算目标出现次数c。

  2. 创建一个长度为10的空列表ls,用于存储每种数对应的代价。

  3. 循环n次,读取每个数和对应的代价,将代价存储到ls中对应数的列表中。

  4. 计算累加代价p,遍历ls中的每个列表,将其排序并累加除去最大的c个代价值。

3、python代码

python 复制代码
n=int(input())
c=n//10
ls=[[] for i in range(10) ]
for i in range(n):
    a,b=map(int,input().split())
    ls[a].append(b)
p=0
for i in range(10):
    ls[i].sort()
    p+=sum(ls[i][:-c])

print(p)

4、运行结果

相关推荐
Giser探索家9 小时前
无人机桥梁巡检:以“空天地”智慧之力守护交通生命线
大数据·人工智能·算法·安全·架构·无人机
budingxiaomoli12 小时前
算法--滑动窗口(二)
算法
ID_1800790547312 小时前
淘宝实时拍立淘按图搜索数据|商品详情|数据分析提取教程
算法·数据分析·图搜索算法
l1t12 小时前
Lua与LuaJIT的安装与使用
算法·junit·单元测试·lua·luajit
Emilia486.14 小时前
【Leetcode&nowcode】代码强化练习(二叉树)
算法·leetcode·职场和发展
墨染点香14 小时前
LeetCode 刷题【135. 分发糖果】
算法·leetcode·职场和发展
秋风战士14 小时前
通信算法之336 :3GPPMixed Mode Turbo Decoder
算法·matlab·fpga开发·信息与通信·基带工程
是那盏灯塔14 小时前
【算法】——动态规划之01背包问题
数据结构·c++·算法·动态规划
im_AMBER14 小时前
Leetcode 41
笔记·学习·算法·leetcode
jinmo_C++15 小时前
数据结构_深入理解堆(大根堆 小根堆)与优先队列:从理论到手撕实现
java·数据结构·算法