提出 #58553881
ソースコード 拡げる
#include <bits/stdc++.h>
using namespace std;
using ll=long long;
template<class T> bool chmin(T &a,T b){if(a>b){a=b;return 1;}else return 0;}
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int N, K;
ll X;
cin >> N >> K >> X;
vector<ll> T(N);
for (int i = 0; i < N; i++) cin >> T[i];
vector<ll> S(N + 1);
for (int i = 0; i < N; i++) S[i + 1] = S[i] + T[i];
// [l, r) を時刻 t でとるときのコスト
auto f = [&](ll l, ll r, ll t) -> ll {
return t * (r - l) - S[r] + S[l];
};
// dp[i][j] の定義
// [0, i) をやった
// 1 個前の操作が、T[j + i] - X より前
vector dp(N, vector<ll>(K, 1ll << 60));
// [hoge, i] をやった直後
vector<ll> dp2(N, 1ll << 60);
ll ans = (1ll << 60);
dp[0][0] = 0;
for (int i = 0; i < N; i++){
for (int j = 0; j < K; j++){
if (i - j < 0) break;
if (j + 1 != K) chmin(dp[i - j][j + 1], dp[i - j][j]);
chmin(dp2[i], dp[i - j][j] + f(i - j, i + 1, T[i]));
}
int r = i + 1, l;
ll t = T[i];
ll cost = dp2[i];
while (r != N){
// 一個前のタイミングが t なので、
// t <= T[r + a] - X となるような a を探したい
int a = 0;
while (r + a != N && a != K && t > T[r + a] - X) a++;
// a があったら、 dp を更新
if (r + a != N && a != K){
chmin(dp[r][a], cost);
// 次に急いでやる範囲は [r, r + a)
// a = 0 なら、T[r - 1] と T[r] が十分離れていることになる
if (a == 0){
break;
}
}
else{
// 次に急いでやる範囲は [r, r + K)
// r + K は N で抑える
a = min(K, N - r);
}
// l, r, t を更新する
l = r;
r = r + a;
t += X;
// [l, r) を t のタイミングでとる
cost += f(l, r, t);
}
if (r == N) chmin(ans, cost);
}
cout << ans << "\n";
}
提出情報
| 提出日時 | |
|---|---|
| 問題 | F - Shipping |
| ユーザ | potato167 |
| 言語 | C++ 17 (gcc 12.2) |
| 得点 | 550 |
| コード長 | 2260 Byte |
| 結果 | AC |
| 実行時間 | 1 ms |
| メモリ | 3708 KiB |
ジャッジ結果
| セット名 | Sample | All | ||||
|---|---|---|---|---|---|---|
| 得点 / 配点 | 0 / 0 | 550 / 550 | ||||
| 結果 |
|
|
| セット名 | テストケース |
|---|---|
| Sample | sample_01.txt, sample_02.txt, sample_03.txt |
| All | sample_01.txt, sample_02.txt, sample_03.txt, test_01.txt, test_02.txt, test_03.txt, test_04.txt, test_05.txt, test_06.txt, test_07.txt, test_08.txt, test_09.txt, test_10.txt, test_11.txt, test_12.txt, test_13.txt, test_14.txt, test_15.txt, test_16.txt, test_17.txt, test_18.txt, test_19.txt, test_20.txt, test_21.txt, test_22.txt, test_23.txt, test_24.txt, test_25.txt, test_26.txt, test_27.txt, test_28.txt, test_29.txt, test_30.txt, test_31.txt, test_32.txt, test_33.txt, test_34.txt, test_35.txt, test_36.txt, test_37.txt, test_38.txt, test_39.txt, test_40.txt, test_41.txt, test_42.txt, test_43.txt, test_44.txt, test_45.txt, test_46.txt, test_47.txt, test_48.txt, test_49.txt, test_50.txt, test_51.txt, test_52.txt, test_53.txt, test_54.txt, test_55.txt, test_56.txt, test_57.txt, test_58.txt, test_59.txt, test_60.txt, test_61.txt, test_62.txt, test_63.txt, test_64.txt, test_65.txt, test_66.txt, test_67.txt, test_68.txt, test_69.txt, test_70.txt, test_71.txt, test_72.txt, test_73.txt, test_74.txt, test_75.txt, test_76.txt, test_77.txt, test_78.txt, test_79.txt, test_80.txt, test_81.txt, test_82.txt, test_83.txt, test_84.txt, test_85.txt |
| ケース名 | 結果 | 実行時間 | メモリ |
|---|---|---|---|
| sample_01.txt | AC | 1 ms | 3536 KiB |
| sample_02.txt | AC | 1 ms | 3460 KiB |
| sample_03.txt | AC | 1 ms | 3608 KiB |
| test_01.txt | AC | 1 ms | 3504 KiB |
| test_02.txt | AC | 1 ms | 3608 KiB |
| test_03.txt | AC | 1 ms | 3620 KiB |
| test_04.txt | AC | 1 ms | 3688 KiB |
| test_05.txt | AC | 1 ms | 3684 KiB |
| test_06.txt | AC | 1 ms | 3544 KiB |
| test_07.txt | AC | 1 ms | 3576 KiB |
| test_08.txt | AC | 1 ms | 3508 KiB |
| test_09.txt | AC | 1 ms | 3472 KiB |
| test_10.txt | AC | 1 ms | 3532 KiB |
| test_11.txt | AC | 1 ms | 3624 KiB |
| test_12.txt | AC | 1 ms | 3572 KiB |
| test_13.txt | AC | 1 ms | 3548 KiB |
| test_14.txt | AC | 1 ms | 3708 KiB |
| test_15.txt | AC | 1 ms | 3536 KiB |
| test_16.txt | AC | 1 ms | 3536 KiB |
| test_17.txt | AC | 1 ms | 3464 KiB |
| test_18.txt | AC | 1 ms | 3436 KiB |
| test_19.txt | AC | 1 ms | 3596 KiB |
| test_20.txt | AC | 1 ms | 3480 KiB |
| test_21.txt | AC | 1 ms | 3448 KiB |
| test_22.txt | AC | 1 ms | 3532 KiB |
| test_23.txt | AC | 1 ms | 3476 KiB |
| test_24.txt | AC | 1 ms | 3512 KiB |
| test_25.txt | AC | 1 ms | 3608 KiB |
| test_26.txt | AC | 1 ms | 3588 KiB |
| test_27.txt | AC | 1 ms | 3536 KiB |
| test_28.txt | AC | 1 ms | 3524 KiB |
| test_29.txt | AC | 1 ms | 3520 KiB |
| test_30.txt | AC | 1 ms | 3456 KiB |
| test_31.txt | AC | 1 ms | 3532 KiB |
| test_32.txt | AC | 1 ms | 3616 KiB |
| test_33.txt | AC | 1 ms | 3548 KiB |
| test_34.txt | AC | 1 ms | 3400 KiB |
| test_35.txt | AC | 1 ms | 3632 KiB |
| test_36.txt | AC | 1 ms | 3512 KiB |
| test_37.txt | AC | 1 ms | 3540 KiB |
| test_38.txt | AC | 1 ms | 3464 KiB |
| test_39.txt | AC | 1 ms | 3532 KiB |
| test_40.txt | AC | 1 ms | 3520 KiB |
| test_41.txt | AC | 1 ms | 3412 KiB |
| test_42.txt | AC | 1 ms | 3460 KiB |
| test_43.txt | AC | 1 ms | 3536 KiB |
| test_44.txt | AC | 1 ms | 3568 KiB |
| test_45.txt | AC | 1 ms | 3460 KiB |
| test_46.txt | AC | 1 ms | 3468 KiB |
| test_47.txt | AC | 1 ms | 3596 KiB |
| test_48.txt | AC | 1 ms | 3544 KiB |
| test_49.txt | AC | 1 ms | 3540 KiB |
| test_50.txt | AC | 1 ms | 3672 KiB |
| test_51.txt | AC | 1 ms | 3616 KiB |
| test_52.txt | AC | 1 ms | 3612 KiB |
| test_53.txt | AC | 1 ms | 3660 KiB |
| test_54.txt | AC | 1 ms | 3476 KiB |
| test_55.txt | AC | 1 ms | 3540 KiB |
| test_56.txt | AC | 1 ms | 3472 KiB |
| test_57.txt | AC | 1 ms | 3548 KiB |
| test_58.txt | AC | 1 ms | 3548 KiB |
| test_59.txt | AC | 1 ms | 3624 KiB |
| test_60.txt | AC | 1 ms | 3668 KiB |
| test_61.txt | AC | 1 ms | 3540 KiB |
| test_62.txt | AC | 1 ms | 3604 KiB |
| test_63.txt | AC | 1 ms | 3472 KiB |
| test_64.txt | AC | 1 ms | 3528 KiB |
| test_65.txt | AC | 1 ms | 3544 KiB |
| test_66.txt | AC | 1 ms | 3464 KiB |
| test_67.txt | AC | 1 ms | 3600 KiB |
| test_68.txt | AC | 1 ms | 3484 KiB |
| test_69.txt | AC | 1 ms | 3544 KiB |
| test_70.txt | AC | 1 ms | 3484 KiB |
| test_71.txt | AC | 1 ms | 3516 KiB |
| test_72.txt | AC | 1 ms | 3604 KiB |
| test_73.txt | AC | 1 ms | 3668 KiB |
| test_74.txt | AC | 1 ms | 3540 KiB |
| test_75.txt | AC | 1 ms | 3456 KiB |
| test_76.txt | AC | 1 ms | 3612 KiB |
| test_77.txt | AC | 1 ms | 3540 KiB |
| test_78.txt | AC | 1 ms | 3528 KiB |
| test_79.txt | AC | 1 ms | 3476 KiB |
| test_80.txt | AC | 1 ms | 3612 KiB |
| test_81.txt | AC | 1 ms | 3544 KiB |
| test_82.txt | AC | 1 ms | 3524 KiB |
| test_83.txt | AC | 1 ms | 3552 KiB |
| test_84.txt | AC | 1 ms | 3544 KiB |
| test_85.txt | AC | 1 ms | 3552 KiB |