제출 #129187

#제출 시각아이디문제언어결과실행 시간메모리
129187joseacaz선물상자 (IOI15_boxes)C++17
0 / 100
4 ms376 KiB
#include "boxes.h" #include <bits/stdc++.h> #define MAXN 1000006 #define INF (1LL << 62LL) using namespace std; typedef long long ll; int N, K, L, lbound, rbound; ll DP[MAXN], pre[MAXN], cost; vector < int > P; ll delivery ( int _n, int _k, int _l, int _p[] ) { N = _n, K = _k, L = _l; P.push_back ( 0 ); for ( int i = 0; i < N; i++ ) P.push_back ( _p[i] ); P.push_back ( L ); for ( int i = 1; i <= N + 1; i++ ) { pre[i] = pre[i - 1] + (P[i] - P[i - 1]); if ( 2 * pre[i] < L ) lbound = i; } for ( int i = N; i >= 1; i-- ) if ( 2 * (pre[N + 1] - pre[i]) < L ) rbound = i; for ( int i = N; i >= 1; i-- ) { DP[i] = INF; for ( int k = 1; k <= K; k++ ) { if ( i + k <= N + 1 ) { if ( i >= rbound ) cost = 2LL * (pre[N + 1] - pre[i]); else if ( i + k - 1 <= lbound ) cost = 2LL * pre[i + k - 1]; else cost = L; DP[i] = min ( DP[i], DP[i + k] + cost ); } } } return DP[1]; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...