結果
問題 | No.952 危険な火薬庫 |
ユーザー |
![]() |
提出日時 | 2020-01-31 19:53:33 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
TLE
|
実行時間 | - |
コード長 | 802 bytes |
コンパイル時間 | 701 ms |
コンパイル使用メモリ | 74,884 KB |
実行使用メモリ | 10,624 KB |
最終ジャッジ日時 | 2024-09-17 06:56:39 |
合計ジャッジ時間 | 4,423 ms |
ジャッジサーバーID (参考情報) |
judge6 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | TLE * 1 -- * 22 |
ソースコード
#include <vector>#include <iostream>#include <algorithm>using namespace std;const long long inf = 1LL << 60;int main() {int N;cin >> N;vector<long long> A(N);for (int i = 0; i < N; ++i) {cin >> A[i];}vector<long long> S(N + 1);for (int i = 0; i < N; ++i) {S[i + 1] = S[i] + A[i];}vector<long long> dp(N + 1, inf);dp[0] = 0;vector<long long> ans(N + 1, inf);for (int i = N; i >= 1; --i) {for (int j = 0; j <= N; ++j) {ans[i] = min(ans[i], dp[j] + (S[N] - S[j]) * (S[N] - S[j]));}vector<long long> ndp(N + 1, inf);for (int j = 0; j <= N; ++j) {for (int k = j - 1; k >= 0; --k) {ndp[j] = min(ndp[j], dp[k] + (S[j - 1] - S[k]) * (S[j - 1] - S[k]));}}dp = ndp;}for (int i = 1; i <= N; ++i) {cout << ans[i] << '\n';}return 0;}