例题实战 1
javapackage 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
javapackage 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); } }