贪心算法的习题答案

例题实战 1

java 复制代码
package tanxin;

import java.util.*;

public class tanxin {
	public static void main(String args[]) {
		Scanner scan=new Scanner(System.in);
		
		List <Integer> list=new ArrayList<>();//list集合存储部落人数
		int n=scan.nextInt();
		for(int i=0;i<n;i++) {
		int a=scan.nextInt();
			list.add(a);
		}
		Collections.sort(list);
		long sum=0;//花费
		while(list.size()>1) {
			int a=list.get(0);
			int b=list.get(1);
			sum+=a+b;
			list.remove(0);
			list.remove(0);//当我们移除第一个部落时,第二个部落的下标也变成了0
			list.add(a+b);//新部落的人数加到list集合中
			Collections.sort(list);//再次进行排序
			
		}
		System.out.print(sum);
		
	
	}
}

例题实战 2

java 复制代码
package lanqiao;

import java.util.*;

public class tanxin {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner scan=new Scanner(System.in);
		int n=scan.nextInt();
		int arr[]=new int [n];
		for(int i=0;i<n;i++) {
			arr[i]=scan.nextInt();
		}
		int q=scan.nextInt();
		int []d=new int[n];
		while(q-->0) {
			int l=scan.nextInt()-1;
			int r=scan.nextInt()-1;
			d[l]+=1;
			if(r+1<n) {
				d[r+1]-=1;
			}
		}
		for(int i=1;i<n;i++) {
			d[i]+=d[i-1];
		}
		long ans=0;
		for(int i=0;i<n;i++) {
			ans+=(long)arr[i]*d[i];
		}
		Arrays.sort(arr);
		Arrays.sort(d);
		long res=0;
		for(int i=0;i<n;i++) {
			res+=(long)arr[i]*d[i];
		}
		System.out.println(res-ans);
	}
	
}
相关推荐
chao18984410 分钟前
基于MATLAB的双摆系统阻抗控制实现
算法
龙腾AI白云1 小时前
大模型-AIGC技术在文本生成与音频生成领域的应用
算法
坚持编程的菜鸟5 小时前
LeetCode每日一题——困于环中的机器人
c语言·算法·leetcode·机器人
Aurorar0rua7 小时前
C Primer Plus Notes 09
java·c语言·算法
我不是QI9 小时前
DES 加密算法:核心组件、加解密流程与安全特性
经验分享·算法·安全·网络安全·密码学
前端小刘哥10 小时前
新版视频直播点播EasyDSS平台,让跨团队沟通高效又顺畅
算法
明月(Alioo)10 小时前
机器学习入门,无监督学习之K-Means聚类算法完全指南:面向Java开发者的Python实现详解
python·算法·机器学习
叶梅树10 小时前
从零构建A股量化交易工具:基于Qlib的全栈系统指南
前端·后端·算法
lingran__11 小时前
算法沉淀第三天(统计二进制中1的个数 两个整数二进制位不同个数)
c++·算法
MicroTech202511 小时前
微算法科技MLGO推出隐私感知联合DNN模型部署和分区优化技术,开启协作边缘推理新时代
科技·算法·dnn