蓝桥杯官网练习题(平均)

问题描述

有一个长度为  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。

评测用例规模与约定

对于  20% 的评测用例, n≤1000;

对于所有评测用例, n≤10^5,0<bi≤2×10^5。

import java.util.*;

public class Main {
  public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		int n=scan.nextInt();
		int n1=n;
		int a[]=new int[10];
		int b[][]=new int[10][n];
		int index0=0,index1=0,index2=0,index3=0,index4=0,
				index5=0,index6=0,index7=0,index8=0,index9=0;
		int p=n/10;
		int ans=0;
		while(n1>0) {
			n1--;
			int k=scan.nextInt();
			a[k]++;
			if(k==0) {
				b[k][index0]=scan.nextInt();
				index0++;
			}
			else if(k==1) {
				b[k][index1]=scan.nextInt();
				index1++;
			}
			else if(k==2) {
				b[k][index2]=scan.nextInt();
				index2++;
			}
			else if(k==3) {
				b[k][index3]=scan.nextInt();
				index3++;
			}
			else if(k==4) {
				b[k][index4]=scan.nextInt();
				index4++;
			}
			else if(k==5) {
				b[k][index5]=scan.nextInt();
				index5++;
			}
			else if(k==6) {
				b[k][index6]=scan.nextInt();
				index6++;
			}
			else if(k==7) {
				b[k][index7]=scan.nextInt();
				index7++;
			}
			else if(k==8) {
				b[k][index8]=scan.nextInt();
				index8++;
			}
			else if(k==9) {
				b[k][index9]=scan.nextInt();
				index9++;
			}
		}
		
		
		for(int i=0;i<=9;i++) {
			if(a[i]>p) {
				int qv=a[i]-p;
				Arrays.sort(b[i]);
				while(qv>0) {
					qv--;
					if(i==0) {
						ans+=b[i][n-index0];
						index0--;
					}
					else if(i==1) {
						ans+=b[i][n-index1];
						index1--;
					}
					else if(i==2) {
						ans+=b[i][n-index2];
						index2--;
					}
					else if(i==3) {
						ans+=b[i][n-index3];
						index3--;
					}
					else if(i==4) {
						ans+=b[i][n-index4];
						index4--;
					}
					else if(i==5) {
						ans+=b[i][n-index5];
						index5--;
					}
					else if(i==6) {
						ans+=b[i][n-index6];
						index6--;
					}
					else if(i==7) {
						ans+=b[i][n-index7];
						index7--;
					}
					else if(i==8) {
						ans+=b[i][n-index8];
						index8--;
					}
					else {
						ans+=b[i][n-index9];
						index9--;
					}
				}
			}
		}
		System.out.println(ans);
	}
}

相关推荐

  1. 练习题平均

    2023-12-06 15:56:04       60 阅读
  2. 练习题(大臣的旅费)

    2023-12-06 15:56:04       53 阅读
  3. 练习题(Excel地址)

    2023-12-06 15:56:04       48 阅读
  4. 练习题(愤怒的小鸟)

    2023-12-06 15:56:04       38 阅读
  5. 填空题(质数拆分)

    2023-12-06 15:56:04       59 阅读
  6. 练习题

    2023-12-06 15:56:04       57 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-06 15:56:04       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-06 15:56:04       100 阅读
  3. 在Django里面运行非项目文件

    2023-12-06 15:56:04       82 阅读
  4. Python语言-面向对象

    2023-12-06 15:56:04       91 阅读

热门阅读

  1. vscode配置代码片段

    2023-12-06 15:56:04       54 阅读
  2. rocketmq 集群环境部署及与spring cloud 集成

    2023-12-06 15:56:04       54 阅读
  3. RepidJson将内容写入文件简单代码示例

    2023-12-06 15:56:04       55 阅读
  4. 深度学习中的Transformer机制

    2023-12-06 15:56:04       58 阅读
  5. 封装请求头内容格式

    2023-12-06 15:56:04       52 阅读
  6. Flink-时间窗口

    2023-12-06 15:56:04       70 阅读
  7. AGI = 大模型 + 知识图谱 + 强化学习

    2023-12-06 15:56:04       66 阅读
  8. 数据库事务

    2023-12-06 15:56:04       59 阅读
  9. Angular中的单向和双向数据绑定

    2023-12-06 15:56:04       53 阅读
  10. php时间和centos时间不一致

    2023-12-06 15:56:04       50 阅读