64分,求调
查看原帖
64分,求调
1073661
dabenBbx楼主2024/10/13 19:32
#include<bits/stdc++.h>
#define int long long
using namespace std;
int c,t,f[500005][15],w[25],e[25],a[2000005],ans;
string s;
signed main(){
	cin>>c>>t;
	while(t--){
		memset(f,0,sizeof f);
		cin>>s;ans = 100000008;
		for(int i = 1;i <= 9;i++) cin>>w[i];
		for(int i = 0;i < s.size();i++) a[i + 1] = s[i] - '0';
		e[1] = 1;
		for(int i = 2;i <= 6;i++) e[i] = e[i - 1] * 10;
		for(int i = s.size();i >= 1;i--){
			f[i][0] = f[i + 1][0] + w[a[i]];
			for(int j = 1;j <= 6;j++){
				f[i][j] = min(f[i + 1][j] + w[a[i]],f[i + 1][j - 1] + a[i] * e[j]);
			}
		}
		for(int j = 0;j <= 6;j++){
			ans = min(ans,f[1][j]);
		}
		cout<<ans<<endl;
	}
	return 0;
}
2024/10/13 19:32
加载中...