Subtask #1的#3re了,求调玄关
  • 板块P1874 快速求和
  • 楼主ymgh
  • 当前回复0
  • 已保存回复0
  • 发布时间2025/7/24 20:46
  • 上次更新2025/7/25 10:19:35
查看原帖
Subtask #1的#3re了,求调玄关
1632297
ymgh楼主2025/7/24 20:46
#include<bits/stdc++.h>
using namespace std;
string s;
int n;
int sum;
int a[45][45];
int dp[45][100005];
int main(){
	cin>>s; 
	cin>>n;
	sum=s.length();
	for(int i=1;i<=sum;i++){
		a[i][i]=s[i-1]-'0';
	}
	for(int i=1;i<sum;i++){
		for(int j=i+1;j<=sum;j++){
			if(a[i][j]>100000) break;
			a[i][j]=a[i][j-1]*10+a[j][j];
		}
	}
	memset(dp,0x3f,sizeof(dp));
	dp[0][0]=-1;
	for(int i=1;i<=sum;i++){
		for(int k=0;k<=n;k++){
			for(int j=i-1;j>=0&&a[j+1][i]<=n;j--){
				if(k>=a[j+1][i]){
					dp[i][k]=min(dp[i][k],dp[j][k-a[j+1][i]]+1);
				}
			}
		}
	}
	if(dp[sum][n]<sum){
		cout<<dp[sum][n];
	}
	else cout<<-1<<endl;

	return 0;
}
2025/7/24 20:46
加载中...