ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#188424 | #3317. 行走(walk) | ddh123 | 100 | 1767ms | 132676kb | C++11 | 1.1kb | 2023-10-03 09:23:51 | 2023-10-03 12:48:44 |
answer
#include<bits/stdc++.h>
using namespace std;
#define int long long
#define mod 998244353
int read(){
int x=0,f=1;
char ch=getchar();
while(ch<'0'||ch>'9'){
if(ch=='-')f=-1;
ch=getchar();
}
while(ch>='0'&&ch<='9')
x=(x<<1)+(x<<3)+(ch^48),ch=getchar();
return x*f;
}
int n,u,v,dp[200005][8],a[200005],ans;
char s[200005];
vector<int>E[200005];
void dfs(int u,int fa=0){
dp[u][1<<a[u]]=1;
vector<int>t[8];
for(int i=0;i<8;i++)
t[i].push_back(0);
for(auto &&v:E[u]){
if(v==fa)
continue;
dfs(v,u);
for(int j=0;j<8;j++){
dp[u][j|(1<<a[u])]+=dp[v][j];
t[j].push_back(dp[v][j]);
}
}
ans+=dp[u][7];
for(int i=t[0].size()-2;i>=0;i--){
for(int j=0;j<8;j++)t[j][i]+=t[j][i+1];
for(int j=0;j<8;j++)for(int k=0;k<8;k++)
if((j|k|(1<<a[u]))==7)ans+=(t[j][i]-t[j][i+1])*t[k][i+1];
}
}
signed main(){
n=read();
scanf("%s",s+1);
for(int i=1;s[i];i++)
a[i]=s[i]-'a';
for(int i=1;i<n;i++){
u=read(),v=read();
E[u].push_back(v);
E[v].push_back(u);
}
dfs(1);
printf("%lld",ans%mod);
return 0;
}
详细
小提示:点击横条可展开更详细的信息
Test #1:
score: 10
Accepted
time: 5ms
memory: 6208kb
input:
2000 ababbcaaacccaabbaaacaabbbbcbcaaaacaaaaacaacbaaaaaaacbcaaacabbcaaacbbcbaabacbacbacbcbaacaacbbcab...
output:
1984050
result:
ok single line: '1984050'
Test #2:
score: 10
Accepted
time: 0ms
memory: 6204kb
input:
2000 accbccbcaacbabbbcbcccbacbccabbccccbccccaccccccbcaccabbcbbbcbccaaccbcccacabbaacbbcabccbaaccbabbb...
output:
1982714
result:
ok single line: '1982714'
Test #3:
score: 10
Accepted
time: 2ms
memory: 6200kb
input:
2000 cccacccbabaacaaacccbbbabcabacabbcbcabacbbaaccaabbcabbbaabbaaababbbabcbcabbccbabacbbcbbbbbbaccbb...
output:
1983256
result:
ok single line: '1983256'
Test #4:
score: 10
Accepted
time: 197ms
memory: 132676kb
input:
200000 aabaaccabcbbabacbcacbaaaccbbbacacacacabbbabcbaabbabcbbbcbbbacababababcaccabcaacbccbaabbbcccbb...
output:
34314841
result:
ok single line: '34314841'
Test #5:
score: 10
Accepted
time: 166ms
memory: 132672kb
input:
200000 bcaaabccbccbaaacabccaaacabcccbccabacbbbbccbacaacccacbaabcabccbcabcbaabaabababbbbcbacacbbaabba...
output:
34315707
result:
ok single line: '34315707'
Test #6:
score: 10
Accepted
time: 180ms
memory: 132676kb
input:
200000 babcaaccaabccbbccbbabcbaccbababbcaacbaccccccabacacbcccabbccbcccacaaabccbbbabbabbcccbaaabcaaaa...
output:
34309683
result:
ok single line: '34309683'
Test #7:
score: 10
Accepted
time: 322ms
memory: 28108kb
input:
200000 abbaaaabbabaabaaabbbaababbabaabaabababaabaababbaaaaababbabaabbabbbbbbbbbababbbaabaaabaabbbbab...
output:
199998
result:
ok single line: '199998'
Test #8:
score: 10
Accepted
time: 324ms
memory: 28012kb
input:
200000 babababbbbbbababaaabaaabaaababbbbabbaaaabaaaabbbbbbaaaaaabbabbabaabaabbaabbbbabbbaabbaababaab...
output:
799971
result:
ok single line: '799971'
Test #9:
score: 10
Accepted
time: 284ms
memory: 27912kb
input:
200000 aabccccabaabcbabcbaabbaccaaaccbcbbbbaccabbcaabbaababbbbacacbcccabcbbbccababccbccbccaaaabccacb...
output:
33543853
result:
ok single line: '33543853'
Test #10:
score: 10
Accepted
time: 287ms
memory: 28184kb
input:
200000 abaabbabacabaabaccbbabcbabbaababbbccabbaacacbcbbcbcacccabbbaccaaccaaaccbabbaabbcbcbaaaaabbbcb...
output:
33539915
result:
ok single line: '33539915'
Extra Test:
score: 0
Extra Test Passed