提出 #75559242
ソースコード 拡げる
#include <bits/stdc++.h>
using namespace std;
#define int ll
#define rep(i, a, b) for(int i = a; i < (b); ++i)
#define all(x) begin(x), end(x)
#define sz(x) (int)(x).size()
typedef long long ll;
typedef pair<int, int> pii;
typedef vector<int> vi;
mt19937_64 rng(std::chrono::system_clock::now().time_since_epoch().count());
signed main() {
cin.tie(0)->sync_with_stdio(0);
int t;
cin >> t;
while(t--){
string s;
cin >> s;
int n = sz(s);
vector<int>a(n+1);
vector<int>p(n+5);
vector<int>dp(n+1);
int sum = 0;
for(int i = 1; i<=n; i++){
a[i] = s[i-1] - '0';
sum += a[i];
}
for(int i = 1; i<=n; i++){
p[i] = p[i-1] + a[i];
}
auto cost = [&](int l, int r) -> int {
if(a[l] == 9)return (int)1e9;
if(l == r)return a[l];
return a[l] + 1 + 9 * (r-l) + 1 - (p[r] - p[l]);
};
for(int i = 1; i<=n; i++){
dp[i] = cost(0,i);
for(int j = 0; j<i; j++){
dp[i] = min(dp[i],dp[j] + cost(j+1,i));
}
}
cout << dp[n] << '\n';
}
return 0;
}
提出情報
| 提出日時 |
|
| 問題 |
D - 紙幣 |
| ユーザ |
kevinyang |
| 言語 |
C++23 (GCC 15.2.0) |
| 得点 |
3 |
| コード長 |
1244 Byte |
| 結果 |
AC |
| 実行時間 |
9 ms |
| メモリ |
3612 KiB |
ジャッジ結果
| セット名 |
Sample |
All |
| 得点 / 配点 |
0 / 0 |
3 / 3 |
| 結果 |
|
|
| セット名 |
テストケース |
| Sample |
00_sample_00.txt |
| All |
00_sample_00.txt, 01_random_00.txt, 01_random_01.txt, 01_random_02.txt |
| ケース名 |
結果 |
実行時間 |
メモリ |
| 00_sample_00.txt |
AC |
1 ms |
3612 KiB |
| 01_random_00.txt |
AC |
2 ms |
3484 KiB |
| 01_random_01.txt |
AC |
9 ms |
3576 KiB |
| 01_random_02.txt |
AC |
4 ms |
3484 KiB |