結果
| 問題 |
No.2364 Knapsack Problem
|
| コンテスト | |
| ユーザー |
momoyuu
|
| 提出日時 | 2023-10-25 15:25:54 |
| 言語 | C++23 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
MLE
|
| 実行時間 | - |
| コード長 | 1,304 bytes |
| コンパイル時間 | 3,071 ms |
| コンパイル使用メモリ | 255,408 KB |
| 実行使用メモリ | 584,576 KB |
| 最終ジャッジ日時 | 2024-09-25 05:53:00 |
| 合計ジャッジ時間 | 25,708 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 2 |
| other | AC * 10 MLE * 10 |
ソースコード
#include<bits/stdc++.h>
using namespace std;
using ll = long long;
int main(){
cin.tie(nullptr);
ios::sync_with_stdio(false);
int n,m,w;
cin>>n>>m>>w;
vector<ll> a(n),b(n),c(m),d(m);
for(int i = 0;i<n;i++) cin>>a[i];
for(int i = 0;i<n;i++) cin>>b[i];
for(int i = 0;i<m;i++) cin>>c[i];
for(int i = 0;i<m;i++) cin>>d[i];
vector<vector<vector<ll>>> dp(1<<n,vector<vector<ll>>(1<<m,vector<ll>(w+1+4000,-1e18)));
dp[0][0][4000] = 0;
ll ans = -1e18;
for(int i = 0;i<1<<n;i++){
for(int j = 0;j<1<<m;j++){
for(int k = 0;k<=w+4000;k++){
ans = max(ans,dp[i][j][k]);
for(int l = 0;l<n;l++){
if(i>>l&1) continue;
int ni = i | (1<<l);
int nxt = k + a[l];
if(nxt>w+4000) continue;
dp[ni][j][nxt] = max(dp[ni][j][nxt],dp[i][j][k]+b[l]);
}
for(int l = 0;l<m;l++){
if(j>>l&1) continue;
int ni = j | (1<<l);
int nxt = k - c[l];
if(nxt<4000) continue;
dp[i][ni][nxt] = max(dp[i][ni][nxt],dp[i][j][k]-d[l]);
}
}
}
}
cout<<ans<<endl;
}
momoyuu