28pts求调
查看原帖
28pts求调
700661
zbj_ov_cy楼主2024/10/16 23:34
#include<bits/stdc++.h>
using namespace std;
const int N=1e5;
int c,T;
string s;
int a[N],v[10];
int main()
{
	scanf("%d%d",&c,&T);
	while(T--)
	{
		long long res=0,ans=0;
		memset(a,0,sizeof a);
		cin>>s;int len=s.size();
		for(int i=1;i<=9;i++) scanf("%d",&v[i]); 
		for(int i=1;i<=len;i++)
		{
			a[i]=s[i-1]-'0';
			for(int j=1;j<=6;j++)
			{
				if(i>=j)
				{
					long long x=0,y=0;
					for(int k=j;k>=1;k--) x=x*10+a[i-k+1],y=y+v[a[i-k+1]];
					ans=max(ans,y-x);
				}
				else break;
			}
		}
		for(int i=1;i<=len;i++) res+=v[a[i]];
		res-=ans;
		printf("%lld\n",res);
	}
	return 0;
}
2024/10/16 23:34
加载中...