我漏打一个分号,找了一上午的bug,淦
查看原帖
我漏打一个分号,找了一上午的bug,淦
53500
NoBDKnowsBeterThanME楼主2020/10/22 11:41
#include <cstdio>
#include <stack>
bool node[500001];
int fa[500001], last[500001];
unsigned long long num1[500001], num2[500001];//num1总数,num2最后连续个数
int main()
{
	using namespace std;
	int n;
	unsigned long long ans = 0;
    char chart;
	scanf("%d", &n);
    while ((chart = getchar()) && chart != '(' && chart != ')');
    if (chart == '(') node[1] = 1;
    else node[1] = 0;
	for (int i = 2; i <= n; i++)
		if (getchar() == '(') node[i] = 1;
		else node[i] = 0;
	for (int i = 2; i <= n; i++)
		scanf("%d", fa + i);
    if (node[1]) last[1] = 1;
	for (int i = 2; i <= n; i++)
	{
        num1[i] = num1[fa[i]];
        if (node[i])
            last[i] = i;
        else if (last[fa[i]])
        {
            num2[i] = num2[fa[last[fa[i]]]] + 1;
            num1[i] = num1[fa[i]] + num2[i];
            last[i] = last[fa[last[fa[i]]]];
        }
        ans ^= num1[i] * i;
	}
    printf("%llu", ans);
	return 0;
}

就13行没打分号,找了一上午的bug,现在都饭点了, wdnmd 就找这?

(顺便告诫后人,f[u]<u

2020/10/22 11:41
加载中...