社区讨论
90pts求调,玄关
P6627[省选联考 2020 B 卷] 幸运数字参与者 1已保存回复 0
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @mig23cay
- 此快照首次捕获于
- 2025/11/26 21:44 3 个月前
- 此快照最后确认于
- 2025/11/26 22:29 3 个月前
CPP
#include<bits/stdc++.h>
#define int long long
using namespace std;
map<int,int> ma;
map<int,int> beg;
int n;
int op;
struct node{
int l,r,w;
int fei;
int a;
};
int cnt;
node f[1000006];
int ff[1000006];
int cha[1000005];
int maxn=0;
int maxp=0;
signed main(){
cin>>n;
int l,r,w,a;
for(int i=1;i<=n;i++){
cin>>op;
if(op==1){
cin>>l>>r>>w;
f[i].l=l;
f[i].r=r;
f[i].w=w;
}
else if(op==2){
cin>>a>>w;
f[i].w=w;
f[i].a=a;
}
else{
cin>>a>>w;
f[i].fei=1;
f[i].w=w;
f[i].a=a;
}
}
for(int i=1;i<=n;i++){
if(f[i].l!=f[i].r){
ff[++cnt]=f[i].l;
ff[++cnt]=f[i].l-1;
ff[++cnt]=f[i].r+1;
ff[++cnt]=f[i].r;
}
else ff[++cnt]=f[i].a,ff[++cnt]=f[i].a+1;
}
ff[++cnt]=0;
sort(ff+1,ff+cnt+1);
int k=0;
for(int i=1;i<=cnt;i++){
if(i==1||ff[i]!=ff[i-1]){
k++;
ma[ff[i]]=k;
beg[k]=ff[i];
}
}
cnt=k;
for(int i=1;i<=n;i++){
if(f[i].l!=f[i].r){
f[i].l=ma[f[i].l];
f[i].r=ma[f[i].r];
}
else f[i].a=ma[f[i].a];
// cout<<f[i].l<<" "<<f[i].r<<" "<<f[i].a<<" "<<f[i].w<<endl;
}
for(int i=1;i<=n;i++){
if(f[i].l!=f[i].r){
cha[f[i].l]^=f[i].w;
cha[f[i].r+1]^=f[i].w;
}
else if(f[i].fei){
cha[1]^=f[i].w;
cha[f[i].a]^=f[i].w;
cha[f[i].a+1]^=f[i].w;
cha[cnt+1]^=f[i].w;
}
else{
cha[f[i].a]^=f[i].w;
cha[f[i].a+1]^=f[i].w;
}
}
int last=0;
for(int i=1;i<=k;i++){
last=cha[i]^last;
int v=last;
if(v>maxn||(v==maxn&&(llabs(beg[i])<llabs(maxp)||llabs(beg[i])==llabs(maxp)&&beg[i]>maxp))){
maxn=v;
maxp=beg[i];
}
}
cout<<maxn<<" "<<maxp;
return 0;
}
回复
共 0 条回复,欢迎继续交流。
正在加载回复...