結果
| 問題 |
No.1 道のショートカット
|
| コンテスト | |
| ユーザー |
Bantako
|
| 提出日時 | 2018-06-07 20:29:35 |
| 言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
AC
|
| 実行時間 | 91 ms / 5,000 ms |
| コード長 | 1,285 bytes |
| コンパイル時間 | 1,759 ms |
| コンパイル使用メモリ | 180,320 KB |
| 実行使用メモリ | 93,568 KB |
| 最終ジャッジ日時 | 2024-07-20 16:36:06 |
| 合計ジャッジ時間 | 3,410 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 4 |
| other | AC * 40 |
コンパイルメッセージ
main.cpp:8:1: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
8 | main(){
| ^~~~
ソースコード
#include<bits/stdc++.h>
#define rep(i,a,b) for(int i=int(a);i<int(b);++i)
using namespace std;
typedef long long ll;
typedef tuple<int,int,int,int> Tp;
int INF = (1LL << 30) - 1;
int MOD = 1e9+7;
main(){
int N,C,V;
cin >> N >> C >> V;
vector< Tp > Vec;
vector<int> S(V*4),T(N),Y(N),M(N);
rep(i,0,V*4)cin >> S[i];
rep(i,0,V){
Vec.emplace_back(S[i], S[i+V], S[i+V*2], S[i+V*3]);
}
sort(Vec.begin(), Vec.end());
int dp[V+1][N+1][C+1];
rep(i,0,V+1)rep(j,0,N+1)rep(k,0,C+1)dp[i][j][k] = INF;
dp[0][0][0] = 0;
/*
rep(i,0,V){
int s = get<0>(Vec[i])-1,t = get<1>(Vec[i])-1,y = get<2>(Vec[i]),m = get<3>(Vec[i]);
cout << s << " " << t << " " << y << " " << m << endl;
}
*/
rep(i,0,V){
int s = get<0>(Vec[i])-1,t = get<1>(Vec[i])-1,y = get<2>(Vec[i]),m = get<3>(Vec[i]);
rep(j,0,N+1)rep(k,0,C+1)dp[i+1][j][k] = dp[i][j][k];
rep(j,0,C+1){
//dp[i+1][t][j] = min(dp[i][t][j], dp[i+1][t][j]);
if(j + y <= C){
dp[i+1][t][j+y] = min(dp[i][t][j+y], dp[i][s][j] + m);
}
}
}
int mini = INF;
rep(i,0,C+1)mini = min(mini, dp[V][N-1][i]);
if(mini == INF)mini = -1;
cout << mini << endl;
}
Bantako