제출 #900191

#제출 시각아이디문제언어결과실행 시간메모리
900191jkwnKnapsack (NOI18_knapsack)Java
73 / 100
1049 ms31864 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())); } for (int i = 0; i < n; i++) { int v = items[i+1].v; int w = items[i+1].w; int k = items[i+1].k; for (int j = s; j >= 0; j--) { if (dp[j] >= 0) { for (int count = 0; count <= k; count++) { if (j + w * count <= s) { dp[j+w*count] = Math.max(dp[j+w*count], dp[j] + v*count); } else { break; } } } } } int ans = 0; for (int i = 0; i < s+1; i++) { ans = Math.max(ans, dp[i]); } 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...