제출 #826012

#제출 시각아이디문제언어결과실행 시간메모리
826012Darren0724Bowling (BOI15_bow)C++17
26 / 100
7 ms328 KiB
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int K=300;
void solve(){
    int n;cin>>n;
    string s;cin>>s;
    vector<int> v(n+1);
    for(int i=1;i<=n;i++){
        cin>>v[i];
    }
    vector<int> dp(301),dp1(301);
    dp[0]=1;
    for(int i=1;i<=n;i++){
        int l1=0,r1=9;
        int l2=0,r2=9;
        if(s[i*2-2]>='0'&&s[i*2-2]<='9'){
            l1=s[i*2-2]-'0';
            r1=s[i*2-2]-'0';
        }
        if(s[i*2-1]>='0'&&s[i*2-1]<='9'){
            l2=s[i*2-1]-'0';
            r2=s[i*2-1]-'0';
        }
        int l3=0,r3=300;
        if(v[i]!=-1){
            l3=v[i],r3=v[i];
        }
        for(int j=l3;j<=r3;j++){
            for(int j1=l1;j1<=r1;j1++){
                for(int j2=l2;j2<=r2;j2++){
                    if(j1+j2>9){
                        continue;
                    }
                    if(j>=j1+j2){
                        dp1[j]+=dp[j-j1-j2];
                    }
                }
            }
        }
        swap(dp,dp1);
        dp1.assign(K+1,0);
    }
    int ans=0;
    for(int i=0;i<=K;i++){
        ans+=dp[i];
    }
    cout<<ans<<endl;
}
 
signed main(){
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    int t;cin>>t;
    while(t--){
        solve();
    }
 
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...