| 比赛 |
期末考试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;
}