最后一个样例为什么WA了啊,有没有大佬帮忙看看
查看原帖
最后一个样例为什么WA了啊,有没有大佬帮忙看看
645290
pipishan楼主2022/4/27 12:11
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.StreamTokenizer;
import java.util.HashMap;
import java.util.Map;

/**
 * P1964 【mc生存】卖东西
 */
public class Main {
    static StreamTokenizer in = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));
    static int in() throws IOException {
        in.nextToken();
        return (int) in.nval;
    }

    static String in2() throws IOException {
        in.nextToken();
        return in.sval;
    }

    public static void main(String[] args) throws IOException {
        int m = 21 - in();
        int n = in();
        Map<String, Integer> map = new HashMap<>();
        int[] ai = new int[n + 1];
        int[] bi = new int[n + 1];
        int[] ci = new int[n + 1];
        int cnt = 1;
        for (int i = 1; i <= n; i++) {
            int a = in();
            int b = in();
            int c = in();
            String sti = in2();
            if(map.containsKey(sti)) {
                ai[map.get(sti)] += a;
            } else {
                ai[cnt] = a;
                bi[cnt] = b;
                ci[cnt] = c;
                map.put(sti, cnt);
                ++cnt;
            }
        }
        n = cnt - 1;
        int[][] f = new int[n + 1][m + 1];
        for (int i = 1; i <= n; i++) {
            for (int j = 0; j <= m; j++) {
                for (int k = 0; k <= ai[i]; k++) {
                    int v = k % ci[i] == 0 ? k / ci[i] : k / ci[i] + 1;
                    if(j >= v) {
                        f[i][j] = Math.max(f[i][j], f[i - 1][j - v] + k * bi[i]);
                    }
                }
            }
        }
        System.out.println(f[n][m]);
    }
}

2022/4/27 12:11
加载中...