1 条题解
-
0
C++ :
#include<iostream> #include<cstdio> using namespace std; const int MAXN=5*100001; int n,a[MAXN],fa[MAXN],last[MAXN]; long long f[MAXN],sum[MAXN],ans; int main(){ scanf("%d\n",&n); for(int i=1;i<=n;++i)a[i]=getchar()-'('; for(int i=2;i<=n;++i)scanf("%d",&fa[i]); for(int i=1;i<=n;ans^=(i*1LL*sum[i]),++i) if(a[i]==0)last[i]=i,sum[i]=sum[fa[i]]; else{ if(last[fa[i]]!=0)f[i]=f[fa[last[fa[i]]]]+1; last[i]=last[fa[last[fa[i]]]],sum[i]=sum[fa[i]]+f[i]; } printf("%lld",ans); return 0; }
- 1
信息
- ID
- 3813
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者