제출 #900188

#제출 시각아이디문제언어결과실행 시간메모리
900188jkwnKnapsack (NOI18_knapsack)Java
29 / 100
73 ms27016 KiB
import java.io.*; import java.util.StringTokenizer; public class knapsack { public static void main(String[] args) throws IOException { BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer tokenizer = new StringTokenizer(in.readLine()); int s = Integer.parseInt(tokenizer.nextToken()); int n = Integer.parseInt(tokenizer.nextToken()); item[] items = new item[n+1]; int[] dp = new int[s+1]; dp[0] = 1; for (int i = 1; i < n+1; i++) { tokenizer = new StringTokenizer(in.readLine()); items[i] = new item(Integer.parseInt(tokenizer.nextToken()),Integer.parseInt(tokenizer.nextToken()),Integer.parseInt(tokenizer.nextToken())); } int ans = 0; for (int i = 1; i < n+1; i++) { int v = items[i].v; int w = items[i].w; int k = items[i].k; int[] nextDP = new int[s+1]; for (int j = 0; j < s+1; j++) { for (int count = 0; count <= k; count++) { if (j - w * count >= 0) { if (dp[j - w * count] >= 1) { nextDP[j] = Math.max(dp[j], dp[j-w*count] + v * count); ans = Math.max(ans, nextDP[j]); } } else { break; } } } dp = nextDP; } System.out.println(ans-1); } static class item { int v, w, k; item(int v, int w, int k) { this.v = v; this.w = w; this.k = k; } } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...