Submission #2245582
Source Code Expand
#include <algorithm> #include <array> #include <cassert> #include <cmath> #include <cstdio> #include <cstring> #include <iomanip> #include <iostream> #include <iterator> #include <map> #include <memory> #include <numeric> #include <queue> #include <set> #include <stack> #include <string> #include <sstream> #include <unordered_map> #include <vector> #define INF 4000000000000000000LL #define MOD 1000000007 #define ALL(x) std::begin(x), std::end(x) int main(int argc, char** argv) { std::cin.tie(0); std::ios_base::sync_with_stdio(0); std::cout << std::fixed << std::setprecision(6); int N, W, w[111] = {0}, v[111], w0, sp = 0; std::cin >> N >> W >> w0 >> v[0]; for (int i = 1; i < N; i ++) { std::cin >> w[i] >> v[i]; w[i] -= w0; } for (int t = 0; t <= N; t ++) { if (t * w0 > W) break; int r = W - t * w0; int dp[2][333][111]; auto curr = dp[0], next = dp[1]; memset(curr, -1, sizeof(dp[0])); curr[0][0] = 0; for (int i = 0; i < N; i ++) { memset(next, -1, sizeof(dp[0])); for (int j = 0; j < 333; j ++) { for (int k = 0; k <= t; k ++) { if (curr[j][k] < 0) continue; next[j][k] = std::max(curr[j][k], next[j][k]); if (j + w[i] <= r && k < t) next[j + w[i]][k + 1] = std::max(curr[j][k] + v[i], next[j + w[i]][k + 1]); } } std::swap(curr, next); } for (int j = 0; j < 333; j ++) for (int k = 0; k <= t; k ++) if (curr[j][k] > sp) sp = curr[j][k]; } std::cout << sp << std::endl; return 0; }
Submission Info
Submission Time | |
---|---|
Task | D - Simple Knapsack |
User | agw |
Language | C++14 (GCC 5.4.1) |
Score | 400 |
Code Size | 1716 Byte |
Status | AC |
Exec Time | 257 ms |
Memory | 512 KB |
Judge Result
Set Name | Sample | All | ||||
---|---|---|---|---|---|---|
Score / Max Score | 0 / 0 | 400 / 400 | ||||
Status |
|
|
Set Name | Test Cases |
---|---|
Sample | example0, example1, example2, example3 |
All | antigreedy0, antigreedy1, antigreedy2, example0, example1, example2, example3, quarter0, quarter1, quarter2, rand0, rand1, rand2, smallw0, smallw1, smallw2 |
Case Name | Status | Exec Time | Memory |
---|---|---|---|
antigreedy0 | AC | 257 ms | 512 KB |
antigreedy1 | AC | 256 ms | 512 KB |
antigreedy2 | AC | 256 ms | 512 KB |
example0 | AC | 1 ms | 512 KB |
example1 | AC | 1 ms | 512 KB |
example2 | AC | 1 ms | 512 KB |
example3 | AC | 1 ms | 512 KB |
quarter0 | AC | 78 ms | 512 KB |
quarter1 | AC | 58 ms | 512 KB |
quarter2 | AC | 22 ms | 512 KB |
rand0 | AC | 1 ms | 512 KB |
rand1 | AC | 1 ms | 512 KB |
rand2 | AC | 2 ms | 512 KB |
smallw0 | AC | 3 ms | 512 KB |
smallw1 | AC | 3 ms | 512 KB |
smallw2 | AC | 9 ms | 512 KB |