Logo Wy Online Judge

WyOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#979#208. 「CSP-S2019」括号树_awa_wangjiawen100593ms65620kbC++141.8kb2025-07-05 09:51:502025-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"