社区讨论
神秘问题求助
P5854【模板】笛卡尔树参与者 5已保存回复 5
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 5 条
- 当前快照
- 1 份
- 快照标识符
- @mhjhsp3n
- 此快照首次捕获于
- 2025/11/04 02:47 4 个月前
- 此快照最后确认于
- 2025/11/04 02:47 4 个月前
CPP
#include<bits/stdc++.h>
#define LL long long
using namespace std;
const int N=1e7+10;
int s[N],z[N],top,t[N][2];
int main(){
// ios::sync_with_stdio(0);
// cin.tie(0); cout.tie(0);
int n;cin>>n;
for(int i=1;i<=n;i++)cin>>s[i];
for(int i=1;i<=n;i++){
int last=0;
while(top&&s[z[top]]>s[i]){last=z[top];top--;}
if(top!=0)t[z[top]][1]=i;
if(last!=0)t[i][0]=last;
z[++top]=i;
}
LL L=0,R=0;
for(int i=1;i<=n;i++){
L=(L^(1ll*i*(t[i][0]+1)));
R=(R^(1ll*i*(t[i][1]+1)));
}
cout<<L<<" "<<R;
return 0;
}
上述代码本地正确,洛谷错误。
代码中的t的第二维开到 3 可以通过,但并没有发现任何可能数组越界的地方,甚至只把LL改为int也能通过部分。
回复
共 5 条回复,欢迎继续交流。
正在加载回复...