贪心算法的习题答案

例题实战 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);
	}
	
}
相关推荐
Blossom.1182 小时前
移动端部署噩梦终结者:动态稀疏视觉Transformer的量化实战
java·人工智能·python·深度学习·算法·机器学习·transformer
轻微的风格艾丝凡2 小时前
卷积的直观理解
人工智能·深度学习·神经网络·算法·计算机视觉·matlab·cnn
田梓燊4 小时前
红黑树分析 1
算法
晚风吹长发5 小时前
二分查找算法+题目详解
c++·算法·二分查找
悠悠~飘5 小时前
18.PHP基础-递归递推算法
算法·php
pilgrim535 小时前
结合 Leetcode 题探究KMP算法
算法·leetcode
罗义凯5 小时前
其中包含了三种排序算法的注释版本(冒泡排序、选择排序、插入排序),但当前只实现了数组的输入和输出功能。
数据结构·c++·算法
kevien_G16 小时前
JAVA之二叉树
数据结构·算法
syt_biancheng6 小时前
Day3算法训练(简写单词,dd爱框框,3-除2!)
开发语言·c++·算法·贪心算法
二进制的Liao7 小时前
【编程】脚本编写入门:从零到一的自动化之旅
数据库·python·算法·自动化·bash