結果
| 問題 |
No.1947 質より種類数
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2022-05-21 00:51:46 |
| 言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
AC
|
| 実行時間 | 430 ms / 2,000 ms |
| コード長 | 1,154 bytes |
| コンパイル時間 | 1,985 ms |
| コンパイル使用メモリ | 200,916 KB |
| 最終ジャッジ日時 | 2025-01-29 12:25:50 |
|
ジャッジサーバーID (参考情報) |
judge3 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 37 |
ソースコード
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using vll = vector<ll>;
using vvll =vector<vll>;
#define all(A) A.begin(),A.end()
#define rep(i, n) for (ll i = 0; i < (ll) (n); i++)
bool chmax(ll& p, ll q) {
if (p < q) {
p = q;
return 1;
}
else {
return 0;
}
}
bool chmin(ll& p, ll q) {
if (p > q) {
p = q;
return 1;
}
else {
return 0;
}
}
int main() {
ll N,V,C;cin>>N>>V>>C;
vll A(N),B(N);
rep(i,N)cin>>A[i]>>B[i];
vvll DP(N+1,vll(V+1,-1e18));
DP[0][0]=0;
rep(i,N){
rep(v,V+1){
chmax(DP[i+1][v],DP[i][v]);
if(v+A[i]<=V){
chmax(DP[i+1][v+A[i]],DP[i][v]+B[i]+C);
}
}
}
vvll DP2(N+1,vll(V+1,-1e18));
DP2[0]=DP[N];
rep(i,N){
rep(v,V+1){
chmax(DP2[i+1][v],DP2[i][v]);
if(v+A[i]<=V){
chmax(DP2[i+1][v+A[i]],DP2[i][v]+B[i]);
chmax(DP2[i+1][v+A[i]],DP2[i+1][v]+B[i]);
}
}
}
ll an=0;
rep(v,V+1)chmax(an,DP2[N][v]);
cout<<an<<endl;
}