社区讨论

0ptsMLE了,为什么?

P11229[CSP-J 2024] 小木棍参与者 2已保存回复 7

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
7 条
当前快照
1 份
快照标识符
@m35f81j6
此快照首次捕获于
2024/11/06 13:10
去年
此快照最后确认于
2025/11/04 15:15
4 个月前
查看原帖
CPP
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N=1e5;
int q,n,dp[200005],use[15]={6,2,5,5,4,5,6,3,7,6};
string ans[200005];
char changeit(int x){
	return x+'0';
}
void init(){
	dp[0]=0;
	ans[0]="";
	for(int i=1;i<=N;i++){
		dp[i]=-1;
		ans[i]="-1";
		for(int j=0;j<=9;j++){
			if(i-use[j]<0)continue;
			if(dp[i-use[j]]==-1)continue;
			if(ans[i-use[j]]==""&&j==0)continue;
			string s2=ans[i-use[j]]+changeit(j);
			if((ans[i].size()>s2.size()||(ans[i].size()==s2.size()&&ans[i]>s2))||ans[i]=="-1"){
				ans[i]=s2;
				dp[i]=dp[i-use[j]]+use[j];
			}
		}
	}
}
signed main () {
	init();
	cin>>q;
	while(q--){
		cin>>n;
		cout<<ans[n]<<endl;
	}
	return 0;
}

回复

7 条回复,欢迎继续交流。

正在加载回复...