贪心14pts求调
查看原帖
贪心14pts求调
749950
XHR20100831楼主2024/10/17 23:30

服啦!大样例都过不了~~ 有没有大佬能看懂我的代码,帮我康康:)


#include <limits.h>
#include <locale.h>
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <wchar.h>
#include <wctype.h>
#include <algorithm>
#include <bitset>
#include <cerrno>
#include <clocale>
#include <cmath>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <ctime>
#include <deque>
#include <exception>
#include <fstream>
#include <functional>
#include <limits>
#include <list>
#include <map>
#include <iomanip>
#include <ios>
#include <iosfwd>
#include <iostream>
#include <istream>
#include <ostream>
#include <queue>
#include <set>
#include <sstream>
#include <stack>
#include <stdexcept>
#include <streambuf>
#include <string>
#include <utility>
#include <vector>
#include <cwchar>
#include <cwctype>
#define fo(a,b,c) for(int a=b;a<=c;a++)
#define ll long long
#define pr printf2
using namespace std;
template <typename T>
void in(T &x){
	char c=getchar();
	int f=1;
	while ((c>'9' || c<'0') && c!='-') c=getchar();
	if(c=='-') f=-1, c=getchar();
	for(x=0; c>='0'&&c<='9'; c=getchar()) x=x*10+c-'0';
	x*=f;
}
struct www{
	ll v1,id;
}v[105];
ll a[105];
ll n1[1000005];
bool cmp(www x,www y){
	if(x.v1!=y.v1) return x.v1<y.v1;
	else return x.id>y.id;
}
ll vis[105];
ll b[105];
int main(){
//	freopen("bargain.in","r",stdin);
//	freopen("bargain.out","w",stdout);
	ll c;
	ll t;
	in(c);
	in(t);
	while(t--){
		string n;
		cin >> n;
		memset(vis,0,sizeof(vis));
		for(int i=1; i<=9; i++){
			in(v[i].v1);
			v[i].id=i;
			a[i]=v[i].v1;
		}
		for(int i=0; i<n.size(); i++) n1[i+1]=n[i]-'0';
		sort(v+1,v+10,cmp);
		ll sum=0;
		ll cnt=n.size();
		for(int i=1; i<=cnt; i++){
			vis[n1[i]]++;
			sum+=a[n1[i]];
		}
		ll ans=0;
		ll ans1=1e9;
		while(1){
			if(cnt<=0) break;
			if(cnt<=6){
				ll s=0;
				ll www=1;
				memset(b,0,sizeof(b));
				for(int i=1; i<=9; i++){
					b[i]=vis[i];
				}
				for(int i=n.size(); i>=1; i--){
					if(b[n1[i]]!=0){
						s+=(www*n1[i]);
						b[n1[i]]--;
						www*=10;
					}
				}
				ans1=min(ans1,ans+s);
			}
			for(int i=1; i<=9; i++){
				if(vis[v[i].id]!=0){
					cnt--;
					vis[v[i].id]--;
					sum-=a[v[i].id];
					ans+=a[v[i].id];
					break;
				}
			}
		}
		cout << ans1 << endl;
	}
	return 0;
}
/*
6
10
3158927982863528
41423 65081 37768 31661 5606 86055 71796 46535 92370
277579549725
70320 38156 44846 72503 31582 84825 6501 13322 8714
9712949517179226
82133 20127 89809 98223 85692 63229 9847 36144 31800
7458738229327
26367 83190 15068 58502 21706 8703 79593 26109 88114
9558181231489842
75674 74654 10662 24703 42426 52480 91265 23980 91191
49251177139673
611 62237 16862 28753 12474 88770 5431 37895 71444
7644413993398317
82508 27079 1910 50919 38833 5446 54593 62464 29527
3388995132292741
99735 93776 26409 76254 86183 18673 64600 88811 53736
85116169184978
35689 13155 25818 10303 24563 23698 26510 59559 25499
843165612149
58796 13696 79415 77920 71167 59007 2320 3911 51317
*/
2024/10/17 23:30
加载中...