贪心算法的习题答案

例题实战 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);
	}
	
}
相关推荐
LDG_AGI4 分钟前
【推荐系统】深度学习训练框架(九):推荐系统与LLM在Dataset、Tokenizer阶段的异同
人工智能·深度学习·算法·机器学习·推荐算法
爪哇部落算法小助手8 分钟前
每日两题day61
数据结构·c++·算法
Swift社区9 分钟前
LeetCode 439 - 三元表达式解析器
算法·leetcode·ssh
小殊小殊9 分钟前
重磅!DeepSeek发布V3.2系列模型!
论文阅读·人工智能·算法
裤裤兔10 分钟前
利用matlab进行FDR校正的实现方式
数据结构·算法·matlab·多重比较矫正·校正·fdr
野蛮人6号11 分钟前
力扣热题100道之31下一个排列
算法·leetcode·职场和发展
子一!!11 分钟前
哈希桶,元素插入逻辑实现
算法·哈希算法
敲代码的嘎仔11 分钟前
LeetCode面试HOT100——160. 相交链表
java·学习·算法·leetcode·链表·面试·职场和发展
吃着火锅x唱着歌12 分钟前
LeetCode 454.四数相加II
算法·leetcode·职场和发展
敲代码的嘎仔13 分钟前
LeetCode面试HOT100—— 206. 反转链表
java·数据结构·学习·算法·leetcode·链表·面试