总的题目链接:https://www.nowcoder.com/acm/contest/79#question
题目设置的范围就是让我们暴力结果的、枚举一遍就好了、(坑、和想象的不一样)
import java.math.BigDecimal;
import java.util.Scanner;
public class A {
static double dp [] = new double[22];
static int y [] = {1, 2, 3, 5};
static double k [] = new double[4];
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int n = input.nextInt();
for(int i = 0; i < 4; i++){
k[i] = input.nextDouble();
}
dp[0] = 1; dp[1] = 1;
for (int i = 1; i <= n; i++) {
for (int j = 0; j < 4; j++) {
if (i >= y[j]) {
dp[i] = Math.max(dp[i], dp[i - y[j]] * Math.pow(1 + k[j], y[j]));
}
}
}
BigDecimal bd = new BigDecimal(dp[n]).setScale(5, BigDecimal.ROUND_HALF_DOWN);
System.out.println(bd);
}
}
直接暴力解决、遍历一遍即可
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.io.StreamTokenizer;
import java.util.Arrays;
public class B {
static int n, m;
static long len = 0;
public static void main(String[] args) throws IOException {
StreamTokenizer in = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));
PrintWriter out = new PrintWriter(new OutputStreamWriter(System.out));
in.nextToken();
n = (int) in.nval;
in.nextToken();
m = (int) in.nval;
int[] a = new int[n];
int[] b = new int[n];
for (int i = 0; i < n; i++) {
in.nextToken();
a[i] = (int) in.nval;
}
for (int i = 0; i < n; i++) {
in.nextToken();
b[i] = (int) in.nval;
}
Arrays.sort(a);
Arrays.sort(b);
long max = 0, now = 0;
for (int i = 0; i < n; i++) {
now += b[n - i - 1] - a[i];
if(i % 3 == 2){
now += m; // 满足bug条件
}
max = Math.max(max, now);
}
out.println(max);
out.flush();
}
}