记录编号 54039 评测结果 AAAAA
题目名称 [HAOI 2012]添加号 最终得分 100
用户昵称 Gravatarcstdio 是否通过 通过
代码语言 C++ 运行时间 0.003 s
提交时间 2013-03-07 20:41:45 内存使用 0.31 MiB
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int main(){
	freopen("purasu.in","r",stdin);
	freopen("purasu.out","w",stdout);
	int f[10][10]={0};//前i个,添j个加号(i从0开始)
	char c[10]={0};
	int m,n;
	cin>>c;
	n=strlen(c);
	scanf("%d",&m);
	int i,j,k;
	for(i=0;i<n;i++) c[i]-='0';
	int s[10][10]={0};
	for(i=0;i<n;i++){
		s[i][i]=c[i];
		for(j=i+1;j<n;j++){
			s[i][j]=s[i][j-1]*10+c[j];
		}
	}
	for(i=0;i<10;i++){
		for(j=0;j<10;j++) f[i][j]=0xfffffff;
	}
	f[0][0]=c[0];
	for(i=1;i<n;i++){
		f[i][0]=s[0][i];
		for(j=1;j<=i;j++){
			f[i][j]=0xfffffff;
			for(k=0;k<i;k++){
				if(f[k][j-1]+s[k+1][i]<f[i][j]) f[i][j]=f[k][j-1]+s[k+1][i];
			}
		}
	}
	printf("%d\n",f[n-1][m]);
	return 0;
}