HELP 能不能用MAP做
查看原帖
HELP 能不能用MAP做
1274483
StupidQichenwang楼主2025/1/22 19:15

有没有人用map映射做这个题,感觉是对的,但只有5分

#include<bits/stdc++.h>
using namespace std;
inline int read()
{
	int 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*10+ch-48;ch=getchar();}
	return x*f;
}
map<int,long long> a,b;
vector<pair<int,int> > c;
int main(){
	int n,qy=0,maxn=0,num=0;
	cin>>n;
	for(int i=0;i<n;i++){
		int opt;
		cin>>opt;
		if(opt==1){
			int l,r,z;
			cin>>l>>r>>z; 
			a[l]^=z;
			a[r+1]^=z;
		}
		if(opt==2){
			int l,z;
			cin>>l>>z;
			a[l]^=z;
		}
		if(opt==3){
			int l,z;
			cin>>l>>z;
			a[l]^=z;
			qy^=z;
		}
	}
	maxn=max(maxn,qy);
	for(auto x:a){
		qy^=x.second;
		if(maxn<qy){
			maxn=qy;
			num=x.first;
		}
		if(maxn==qy){
			if(abs(num)==abs(x.first)){
				num=max(num,x.first);
			}
			else if(abs(num)>abs(x.first)){
				num=x.first;
			}
		}
	}
	cout<<maxn<<" "<<num<<" ";
}
2025/1/22 19:15
加载中...