求助:样例#3#4#5没过,AC了
查看原帖
求助:样例#3#4#5没过,AC了
1227878
Wan_Ye楼主2024/10/13 18:58

rt,可以测试#3 #4 #5 没过,请求加强数据

#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=1e5+10;;
int pre[21],dp[21],ans;
int T,a[N],len,v[N],p;
char c[N];
inline void init(){
	ans=0;
	for(int i=1;i<=len;i++) ans+=v[a[i]];
	for(int i=1;i<=20;i++) dp[i]=-LONG_LONG_MAX;
	dp[0]=0;
}
signed main(){
	ios::sync_with_stdio(0);
	cin.tie(0),cout.tie(0);
	cin>>p;
	cin>>T;
	pre[0]=1;
	for(int i=1;i<=20;i++) pre[i]=pre[i-1]*10;
	while(T--){
		cin>>(c+1);
		len=strlen(c+1);
		for(int i=1;i<=len;i++)	a[i]=c[i]-'0';
		for(int i=1;i<=9;i++) cin>>v[i];
		init();
		for(int i=len;i>=1;i--)
			for(int j=min(14ll,len-i+1);j>=1;j--)
				dp[j]=max(dp[j],dp[j-1]+v[a[i]]-a[i]*pre[j-1]);
		int maxn=0;
		for(int i=1;i<=20;i++) maxn=max(maxn,dp[i]);
		cout<<ans-maxn<<'\n';
	}
	return 0;
}
2024/10/13 18:58
加载中...