求助空间优化
查看原帖
求助空间优化
1392822
ren_lei_zhi_guang楼主2025/2/2 20:48

MLE50,MLE on #4,5,7,8,10

代码:

#include<bits/stdc++.h>
#define I using
#define AK namespace
#define IOI std
#define i_ak return
#define ioi  0
I AK IOI;
int t,n,a[]={6,2,5,4,3,7};
string dp[100005]={"-1"},b[10];
string check(string a,string b){
	if(a=="-1"&&b=="-1")return "-1";
	else if(a=="-1")return b;
	else if(b=="-1")return a;
	else{
		int len1=a.size(),len2=b.size();
		if(len1==len2){
			if(a>b)return b;
			return a;
		}
		else{
			if(len1>len2)return b;
			return a;
		}
	}
}
int main(){
	//freopen("","r",stdin);
	//freopen("","w",stdout);
	cin>>t;
	while(t--){
		cin>>n;
		for(int i=1;i<=n;i++)dp[i]="-1";
		dp[2]="1";
		dp[6]="6";
		dp[5]="2";
		dp[4]="4";
		dp[3]="7";
		dp[7]="8";
		b[2]="1";
		b[6]="0";
		b[5]="2";
		b[4]="4";
		b[3]="7";
		b[7]="8";
		for(int i=1;i<=n;i++){
			for(int j=0;j<=5;j++){
				if(i>=a[j]&&dp[i-a[j]]!="-1")dp[i]=check(dp[i],dp[i-a[j]]+b[a[j]]);
			}
		}
		cout<<dp[n]<<endl;
	}
	i_ak ioi;
}
2025/2/2 20:48
加载中...