第一篇题解有误(?
查看原帖
第一篇题解有误(?
536597
Devsong_楼主2022/8/22 08:34

rt,在看第一篇题解的 55pts 的思路,结果只有 10pts。

然后我把题解的 55pts 部分分代码完善了一下提交,发现只有 5pts?

是我改错了吗/kk

完善后的题解所说的 “55pts” 代码:

#include <bits/stdc++.h>

using namespace std;

int n, q;
char c[114514];
int top;
int lst[114514], s[114514], sum[114514];

int main() {
    cin >> n >> c + 1;
	for(int i = 1; i <= n; i ++) //好吧只多了个循环....
    {
	if(c[i] == ')')
	{
		if(top == 0) continue; //判断栈是否为空 
		int t = s[top]; //匹配的前括号的位置 
		lst[i] = lst[t - 1] + 1; //结论计算贡献值
        top --;
	}
	else if(c[i] == '(') s[++ top] = i; //是前括号,就压入它的位置
	sum[i] = sum[i - 1] +  lst[i]; //计算总和 
    } 
    int ans = 0;
    for (int i = 1; i <= n; i++) ans ^= (sum[i] * i);
    cout << ans << endl;
}


2022/8/22 08:34
加载中...