MnZn性感代码,在线求调(90pts 哇11
查看原帖
MnZn性感代码,在线求调(90pts 哇11
229008
yshpdyt楼主2023/7/29 11:17
#include<bits/stdc++.h>
#define ll long long
using namespace std;
ll f[55][245141],n,m,a[55],g[55][245141];
string s;
int main(){
    cin>>s>>m;
    n=s.size();
    s=" "+s;
    memset(f,0x3f,sizeof(f));
    for(ll i=1;i<=n;i++){
        a[i]=s[i]-'0';
        for(ll j=1;j<=i;j++){
            if(g[j][i-1]*10+a[i]>m){
                g[j][i]=1145141;
                continue;
            }
            g[j][i]=g[j][i-1]*10+a[i];
            f[i][g[j][i]]=0;
            //cout<<g[j][i]<<endl;
        }
    }
    //11111111111111111111 20
    if(g[1][n]<m&&g[1][n]!=0){
        cout<<"-1";
        return 0;
    }
    for(ll i=2;i<=n;i++){
        for(ll j=0;j<=m;j++){
            for(ll k=i-1;k>=1;k--){
                ll t=g[k+1][i];
                if(j>=t)f[i][j]=min(f[i][j],f[k][j-t]+1);
                else break;
                //cout<<i<<" "<<j<<" "<<k<<" "<<t<<" "<<f[i][j]<<endl;
            }
        }
    }
    if(f[n][m]<INT_MAX)cout<<f[n][m];
    else cout<<-1;
    return 0;
}
2023/7/29 11:17
加载中...