Submission #3768374
Source Code Expand
#include <iostream> #include <fstream> #include <sstream> #include <iomanip> #include <vector> #include <string> #include <algorithm> #include <queue> #include <stack> #include <map> #include <set> #include <unordered_set> #include <unordered_map> #include <bitset> #include <limits> #include <random> #include <complex> #include <cmath> #include <cstdio> #include <cstdlib> #include <cassert> using namespace std; #define REP(i,n) for (int i = 0; i < n; i++) template <class T> using reversed_priority_queue = priority_queue<T, vector<T>, greater<T> >; typedef long long ll; ll N,W; vector < ll > v; vector < ll > w; ll dp[300010]; int main () { cin >> N >> W; v.resize(N); w.resize(N); REP(i,N) cin >> v[i] >> w[i]; if (N <= 30) { REP(i,30 - N) { v.push_back(0); w.push_back(0); } ll ans = 0; map < ll, ll > wt; REP(i,(1 << 15)) { ll sum_w = 0; ll sum_v = 0; REP(j,15) { if ((i >> j) & 1) { sum_w += w[j]; sum_v += v[j]; } } if (wt.find(sum_w) == wt.end()) { wt[sum_w] = sum_v; } else { wt[sum_w] = max(wt[sum_w], sum_v); } if (sum_w <= W) { ans = max(ans, sum_v); } } ll max_v = 0; vector < pair < ll,ll > > cnd; for (auto itr = wt.begin(); itr != wt.end(); itr++) { if (max_v < itr->second) { max_v = itr->second; cnd.push_back(make_pair(itr->first, itr->second)); } } REP(i,(1 << 15)) { ll sum_w = 0; ll sum_v = 0; REP(j,15) { if ((i >> j) & 1) { sum_w += w[j + 15]; sum_v += v[j + 15]; } } if (sum_w <= W) { ans = max(ans, sum_v); } int l = 0, r = (int)cnd.size(); while (r - l > 1) { int mid = (l + r) / 2; if (cnd[mid].first + sum_w <= W) l = mid; else r = mid; } if (sum_w + cnd[l].first <= W) { sum_v += cnd[l].second; ans = max(ans, sum_v); } } cout << ans << endl; return 0; } bool w_1000 = true; REP(i,N) { if (1000 < w[i]) { w_1000 = false; } } if (w_1000) { for (int i = 0; i < N; i++) { for (ll j = 250005; j >= 0; j--) { if (dp[j] > 0) { dp[j + w[i]] = max(dp[j + w[i]], dp[j] + v[i]); } } dp[w[i]] = max(dp[w[i]], v[i]); } ll ans = 0; for (ll i = 0; i <= min(W, 300000LL); i++) { ans = max(ans, dp[i]); } cout << ans << endl; return 0; } return 0; }
Submission Info
Submission Time | |
---|---|
Task | D - ナップサック問題 |
User | kosakkun |
Language | C++14 (GCC 5.4.1) |
Score | 67 |
Code Size | 3155 Byte |
Status | WA |
Exec Time | 43 ms |
Memory | 2304 KB |
Judge Result
Set Name | Sample | Subtask1 | Subtask2 | Subtask3 | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Score / Max Score | 0 / 0 | 34 / 34 | 33 / 33 | 0 / 33 | ||||||||||
Status |
|
|
|
|
Set Name | Test Cases |
---|---|
Sample | subtask00_sample_1.txt, subtask00_sample_2.txt, subtask00_sample_3.txt, subtask00_sample_4.txt |
Subtask1 | subtask01_0.txt, subtask01_1.txt, subtask01_10.txt, subtask01_11.txt, subtask01_12.txt, subtask01_13.txt, subtask01_14.txt, subtask01_2.txt, subtask01_3.txt, subtask01_4.txt, subtask01_5.txt, subtask01_6.txt, subtask01_7.txt, subtask01_8.txt, subtask01_9.txt, subtask00_sample_1.txt, subtask00_sample_2.txt, subtask00_sample_3.txt, subtask00_sample_4.txt |
Subtask2 | subtask02_0.txt, subtask02_1.txt, subtask02_10.txt, subtask02_11.txt, subtask02_12.txt, subtask02_13.txt, subtask02_14.txt, subtask02_2.txt, subtask02_3.txt, subtask02_4.txt, subtask02_5.txt, subtask02_6.txt, subtask02_7.txt, subtask02_8.txt, subtask02_9.txt, subtask00_sample_1.txt, subtask00_sample_3.txt |
Subtask3 | subtask03_0.txt, subtask03_1.txt, subtask03_10.txt, subtask03_11.txt, subtask03_2.txt, subtask03_3.txt, subtask03_4.txt, subtask03_5.txt, subtask03_6.txt, subtask03_7.txt, subtask03_8.txt, subtask03_9.txt, subtask00_sample_1.txt, subtask00_sample_4.txt |
Case Name | Status | Exec Time | Memory |
---|---|---|---|
subtask00_sample_1.txt | AC | 5 ms | 256 KB |
subtask00_sample_2.txt | AC | 17 ms | 2304 KB |
subtask00_sample_3.txt | AC | 10 ms | 256 KB |
subtask00_sample_4.txt | AC | 10 ms | 256 KB |
subtask01_0.txt | AC | 17 ms | 2304 KB |
subtask01_1.txt | AC | 16 ms | 2304 KB |
subtask01_10.txt | AC | 16 ms | 2304 KB |
subtask01_11.txt | AC | 17 ms | 2304 KB |
subtask01_12.txt | AC | 16 ms | 2304 KB |
subtask01_13.txt | AC | 16 ms | 2304 KB |
subtask01_14.txt | AC | 16 ms | 2304 KB |
subtask01_2.txt | AC | 16 ms | 2304 KB |
subtask01_3.txt | AC | 16 ms | 2304 KB |
subtask01_4.txt | AC | 5 ms | 256 KB |
subtask01_5.txt | AC | 5 ms | 256 KB |
subtask01_6.txt | AC | 5 ms | 256 KB |
subtask01_7.txt | AC | 16 ms | 2304 KB |
subtask01_8.txt | AC | 16 ms | 2304 KB |
subtask01_9.txt | AC | 17 ms | 2304 KB |
subtask02_0.txt | AC | 42 ms | 1024 KB |
subtask02_1.txt | AC | 42 ms | 1024 KB |
subtask02_10.txt | AC | 42 ms | 1024 KB |
subtask02_11.txt | AC | 42 ms | 1024 KB |
subtask02_12.txt | AC | 42 ms | 1024 KB |
subtask02_13.txt | AC | 34 ms | 256 KB |
subtask02_14.txt | AC | 42 ms | 1024 KB |
subtask02_2.txt | AC | 43 ms | 1024 KB |
subtask02_3.txt | AC | 42 ms | 1024 KB |
subtask02_4.txt | AC | 42 ms | 1024 KB |
subtask02_5.txt | AC | 42 ms | 1024 KB |
subtask02_6.txt | AC | 42 ms | 1024 KB |
subtask02_7.txt | AC | 42 ms | 1024 KB |
subtask02_8.txt | AC | 42 ms | 1024 KB |
subtask02_9.txt | AC | 42 ms | 1024 KB |
subtask03_0.txt | WA | 1 ms | 256 KB |
subtask03_1.txt | WA | 1 ms | 256 KB |
subtask03_10.txt | WA | 1 ms | 256 KB |
subtask03_11.txt | WA | 1 ms | 256 KB |
subtask03_2.txt | WA | 1 ms | 256 KB |
subtask03_3.txt | WA | 1 ms | 256 KB |
subtask03_4.txt | WA | 1 ms | 256 KB |
subtask03_5.txt | WA | 1 ms | 256 KB |
subtask03_6.txt | WA | 1 ms | 256 KB |
subtask03_7.txt | WA | 1 ms | 256 KB |
subtask03_8.txt | WA | 1 ms | 256 KB |
subtask03_9.txt | WA | 1 ms | 256 KB |