WA 了3个 玄关
查看原帖
WA 了3个 玄关
981592
Damon77楼主2025/6/21 09:54
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define ls p<<1
#define rs p<<1|1
#define pb push_back

const ll N=2e5+10;
const ll M=2e3+10;
const ll inf=1e12;
const ll mod=1e9+7;

inline ll lowbit(ll x){
	return x&(-x);
}
const ll num[20]={0,2,5,5,4,5,6,3,7,6};
ll n,m;
ll a[N];
string b[N];
string dp[N];
inline string ma(string a,string b){
    if(a.size()>b.size()) return a;
    if(b.size()>a.size()) return b;
    for(int i=0;i<a.size();i++){
        if(a[i]<b[i]) return b;
        if(b[i]<a[i]) return a;
    }
    return a;
}
int main(){
    ios::sync_with_stdio(0);
    cin.tie(0);cout.tie(0);
    cin>>n>>m;
    for(int i=1;i<=m;i++){
        string x;
        cin>>x;
        a[i]=x[0]-'0';
        b[i]=x;
        dp[num[x[0]-'0']]=x;
    }
    for(int i=1;i<=n;i++){
        string s="0";
        for(int j=1;j<=m;j++){
            if(i-num[a[j]]<0) continue;
            ll tmp=i-num[a[j]];
            if(dp[tmp]=="") continue;
            if(s=="0") s=b[j]+dp[tmp];
            else s=ma(s,b[j]+dp[tmp]);
        }
        if(s!="0") dp[i]=ma(dp[i],s);
    }
    cout<<dp[n];
	return 0;
} 
2025/6/21 09:54
加载中...