思路:
1、写入数据
2、计算每种项目最大的支出 票价肯定是一个二次函数
3、排序后买票(降序)
4、打印答案
代码如下
package 蓝桥杯备赛;
import java.lang.reflect.Array;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Scanner;
public class 最大开支 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int n,m;
n = scan.nextInt();
m = scan.nextInt();
int b,k;
long money = 0;
ArrayList<Integer> list = new ArrayList<>();
for(int i=1;i<=m;i++) {
k =scan.nextInt();
b =scan.nextInt();
for(int j=1;j<=n;j++) {
int d = 2*k*j-k+b;
if (d>0) {
list.add(d);
}
else {
break;
}
}
}
//现在Arraylist降序
Collections.sort(list,(o1,o2)->o2-o1);
// list.sort(Comparator.naturalOrder());
int num = Math.min(n, list.size());
for(int i=0;i<num;i++) {
money += list.get(i);
}
System.out.print(money);
}
}