ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#979 | #208. 「CSP-S2019」括号树 | _awa_wangjiawen | 100 | 593ms | 65620kb | C++14 | 1.8kb | 2025-07-05 09:51:50 | 2025-07-05 11:18:25 |
answer
#include<bits/stdc++.h>
using namespace std;
const long long mod1=998244353;
const long long mod2=1000000007;
const long long inf=0x3f3f3f3f3f3f3f3f;
struct node{
char s;
vector<long long>son;
long long ssum;
}a[500001];
long long n,ans;
long long read();
void write(long long x);
void init();
void domemset();
void dfs(long long x,long long sum,long long sumleft,long long lef[])
{
long long tmp=lef[sumleft];
bool flag=(sumleft==0);
if(a[x].s=='(')
sumleft++;
else
{
lef[sumleft]=0;
if(sumleft!=0)
{
sumleft--;
lef[sumleft]++;
sum+=lef[sumleft];
}
}
// cout<<x<<endl<<sum<<" "<<sumleft<<endl;
a[x].ssum=sum;
for(int i=0;i<a[x].son.size();i++)
dfs(a[x].son[i],sum,sumleft,lef);
if(a[x].s==')')
{
if(flag==0)
{
lef[sumleft]--;
sumleft++;
}
lef[sumleft]=tmp;
}
return ;
}
long long leff[500011];
void fun()
{
// domemset();
n=read();
for(int i=1;i<=n;i++)
cin>>a[i].s;
for(int i=2;i<=n;i++)
a[read()].son.push_back(i);
dfs(1,0,0,leff);
// for(int i=1;i<=n;i++)
// cout<<a[i].ssum<<" ";
// cout<<endl;
for(int i=1;i<=n;i++)
ans=ans^(a[i].ssum*i);
write(ans);
return ;
}
int main()
{
// freopen("C.in","r",stdin);
// freopen("C.out","w",stdout);
srand(time(NULL));
// init();
// while(1)
// t=read();
// for(int i=1;i<=t;i++)
fun();
return 0;
}
void init()
{
return ;
}
void domemset()
{
return ;
}
long long read()
{
long long 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<<3)+(x<<1)+(ch^'0');
ch=getchar();
}
return x*f;
}
void write(long long x)
{
if(x<0)
putchar('-'),x=-x;
if(x>=10)
write(x/10);
putchar((x%10)^'0');
return ;
}
Details
小提示:点击横条可展开更详细的信息
Test #1:
score: 5
Accepted
time: 4ms
memory: 24580kb
input:
7 (()()(( 1 2 3 4 5 6
output:
15
result:
ok "15"
Test #2:
score: 5
Accepted
time: 4ms
memory: 24872kb
input:
8 )())((() 1 2 3 4 5 6 7
output:
19
result:
ok "19"
Test #3:
score: 5
Accepted
time: 5ms
memory: 24652kb
input:
198 )))())(())())(()))(()))))()(()(()()))())(()()(()()())()()))(())(())())((()((()((()(((())((()()))...
output:
3273
result:
ok "3273"
Test #4:
score: 5
Accepted
time: 4ms
memory: 24828kb
input:
200 ))((())())())(())))()))())(((()()((((()((()(((((())())(()))())()))((((())((()()(())()()()())(()(...
output:
21364
result:
ok "21364"
Test #5:
score: 5
Accepted
time: 4ms
memory: 24868kb
input:
1949 (())))((()))(()))()()((())()(()))())((()()))(())))((())))()()(())((())(())()(()((()((((()((())(...
output:
1098479
result:
ok "1098479"
Test #6:
score: 5
Accepted
time: 4ms
memory: 25080kb
input:
1926 ())(((()()()))(()))())()))((((()(((())())())((((())()()))((())(())))))))(())))()))()(()()()))()...
output:
531389
result:
ok "531389"
Test #7:
score: 5
Accepted
time: 4ms
memory: 24976kb
input:
2000 ))())())()())))(()()(())))))(()((((()(()())())())))(()())))(()))()()())(())()((()()(()()))(())(...
output:
63861
result:
ok "63861"
Test #8:
score: 5
Accepted
time: 7ms
memory: 24712kb
input:
1998 ()))((()((()(()))))()((())()())())((((()))((((()()((((((())())))((()))()()))(())()((()))))()(()...
output:
1416
result:
ok "1416"
Test #9:
score: 5
Accepted
time: 4ms
memory: 24724kb
input:
1999 )))(((()(()()()(()))())((()()()(()))(((()())()))))))))(()()))(((())((()))))())((()(())()(((()))...
output:
27926
result:
ok "27926"
Test #10:
score: 5
Accepted
time: 5ms
memory: 24728kb
input:
2000 ()((()()(((()(()()))()()(((()))((()))()()()(((()()(())((()(((())(()()))()))(((((())()(()()()())...
output:
10983
result:
ok "10983"
Test #11:
score: 5
Accepted
time: 17ms
memory: 37244kb
input:
99997 ()(((()()))()()(())(()))(((()(((())()((())((()))))))))()(((())((())())())())()()(()())()(((()(...
output:
3818846184119
result:
ok "3818846184119"
Test #12:
score: 5
Accepted
time: 23ms
memory: 37032kb
input:
99998 (((()((((()(()))()((()))))))))(()())()()()()()()((()))(()(())()((())((((()((()())()))()((())((...
output:
6201171476965
result:
ok "6201171476965"
Test #13:
score: 5
Accepted
time: 19ms
memory: 37292kb
input:
99999 ()(())()(())()()()()(()())()()(())()(()()()()(()()()()(()())(())((((()((()()))((()))())))(()((...
output:
242124759663
result:
ok "242124759663"
Test #14:
score: 5
Accepted
time: 21ms
memory: 37136kb
input:
100000 ()(()())()()((((())((())()(((()))))()())()(()((())()))()()))(((()(((()(())))))))((()()()))()(...
output:
5113850219609
result:
ok "5113850219609"
Test #15:
score: 5
Accepted
time: 22ms
memory: 32788kb
input:
99999 ((()()()(((()())(()))()((())))))(((())())()()())(()()(()))()()()()(()((()()((((())))))))()()()...
output:
2085082970032
result:
ok "2085082970032"
Test #16:
score: 5
Accepted
time: 24ms
memory: 33416kb
input:
100000 ()((())(()()())(()()))(()())(())()((()()((())(()((()()(()))))((())))))()((()((()((())())((()(...
output:
2112798541955
result:
ok "2112798541955"
Test #17:
score: 5
Accepted
time: 111ms
memory: 65224kb
input:
500000 (())()((()))(((())))()()()()(())()()(())()(())()(((())))(((())))(())()()()()(())((()()))(((()...
output:
487466589970316
result:
ok "487466589970316"
Test #18:
score: 5
Accepted
time: 104ms
memory: 65204kb
input:
500000 ()()()()((((()))))((()))(())(()(()))()(())(())()()(()()(()))()(()())()((()(())))(())(())()(()...
output:
1047922056418682
result:
ok "1047922056418682"
Test #19:
score: 5
Accepted
time: 110ms
memory: 65452kb
input:
500000 ()()(())(())()()()(((())((()(()()(()))(()))((()())))))(()(()((((()))()()((()(()(())(((()(((((...
output:
1616950739745800
result:
ok "1616950739745800"
Test #20:
score: 5
Accepted
time: 97ms
memory: 65620kb
input:
500000 ()((()(())))()((()())((())()())(())())((())())()((()))(())((()()()))()(()())(()(()))()(()((((...
output:
1464802790801058
result:
ok "1464802790801058"