比赛 期末考试0 评测结果 WWTTETTEET
题目名称 学姐的下午茶 最终得分 0
用户昵称 zhyn 运行时间 11.057 s
代码语言 C++ 内存使用 3.52 MiB
提交时间 2026-02-07 09:48:20
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;

#define ll long long
const ll mod=1e9+7;

int n,m=0;
string s[50];
int num[5000][3];
ll k=0,sum=0,ans=0;
int trie[210][2];


void init(){
    for(int i=0;i<=m+5;i++){
        trie[i][0]=trie[i][1]=0;
    }
}

void insert(string t){
    int u=0;
    int len=t.size()-1;
    for(int i=1;i<=len;i++){
        int a=t[i]-'0';
        if(trie[u][a]==0){
            trie[u][a]=++sum;
        }
        u=trie[u][a];
    }
    if(sum>=mod){
        sum-=mod;
    }
}


void col(){
    sum=0;
    for(int i=1;i<=n;i++){
        insert(s[i]);
    }
    sum++;
    ans+=sum;
    while(ans>=mod){
        ans-=mod;
    }
}


void solv(int x){
    if(x>k){
        init();
        col();
        
        /*for(int i=1;i<=n;i++){
            cout<<s[i]<<"\n";
        }
        cout<<sum<<"\n\n";*/
        return;
    }
    int a=num[x][1],b=num[x][2];
    s[a][b]='0';
    solv(x+1);
    s[a][b]='1';
    solv(x+1);
}


int main(){
    
    
    freopen("lowtea.in","r",stdin);
    freopen("lowtea.out","w",stdout);
    
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    
    
    cin>>n;
    
    for(int i=1;i<=n;i++){
        cin>>s[i];
        s[i]=' '+s[i];
    }
    
    for(int i=1;i<=n;i++){
        int x=s[i].size();
        m=max(m,x);
        for(int j=1;j<x;j++){
            if(s[i][j]=='?'){
                k++;
                num[k][1]=i,num[k][2]=j;
            }
        }
    }
    
    solv(1);
    
    cout<<ans<<"\n";
    
    
    return 0;
}