結果
| 問題 |
No.2741 Balanced Choice
|
| コンテスト | |
| ユーザー |
kabut000
|
| 提出日時 | 2024-04-21 13:21:21 |
| 言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,308 bytes |
| コンパイル時間 | 528 ms |
| コンパイル使用メモリ | 65,792 KB |
| 実行使用メモリ | 410,112 KB |
| 最終ジャッジ日時 | 2024-10-13 11:57:23 |
| 合計ジャッジ時間 | 5,484 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 2 |
| other | WA * 10 |
ソースコード
#include <iostream>
#define MAX_N 5100
#define INF 1e9
long long dp[MAX_N][MAX_N][2];
int main(void) {
int n, w, d;
long long tn[MAX_N], wn[MAX_N], vn[MAX_N];
std::cin >> n >> w >> d;
for (int i=0; i<n; i++)
std::cin >> tn[i] >> wn[i] >> vn[i];
for (int i=0; i<MAX_N; i++)
for(int j=0; j<MAX_N; j++)
for (int k=0; k<2; k++)
dp[i][j][k] = INF;
dp[0][0][0] = 0;
dp[0][0][1] = 0;
for (int i=0; i<n; i++) {
for (int v=0; v<MAX_N; v++) {
int t = tn[i];
if(v-vn[i] >= 0) {
if (dp[i+1][v][t]+dp[i+1][v][(t+1)%2] > dp[i][v-vn[i]][t]+dp[i][v-vn[i]][(t+1)%2]+wn[i]) {
dp[i+1][v][t] = dp[i][v-vn[i]][t]+wn[i];
dp[i+1][v][(t+1)%2] = dp[i][v-vn[i]][(t+1)%2];
}
} else {
if (dp[i+1][v][t]+dp[i+1][v][(t+1)%2] > dp[i][v][t]+dp[i][v][(t+1)%2]) {
dp[i+1][v][t] = dp[i][v][t];
dp[i+1][v][(t+1)%2] = dp[i][v][(t+1)%2];
}
}
}
}
long long ans = 0;
for (int v=0; v<MAX_N; v++) {
if (dp[n][v][0]+dp[n][v][1] <= w && std::abs(dp[n][v][0]-dp[n][v][1]) <= d)
ans = v;
}
std::cout << ans << std::endl;
}
kabut000