提出 #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
結果
AC × 1
AC × 4
セット名 テストケース
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