O(nm) 暴力怎么挂了
  • 板块P11398 众数
  • 楼主Amoribus
  • 当前回复2
  • 已保存回复2
  • 发布时间2025/1/21 15:01
  • 上次更新2025/1/21 16:50:35
查看原帖
O(nm) 暴力怎么挂了
935976
Amoribus楼主2025/1/21 15:01
#include<bits/stdc++.h>
#define int long long
using namespace std;
int T,n,m;
int a[300009],b[300009];
int val[300009];//预处理下标权值 
map<int,int> mp;
signed main()
{
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	cin>>T>>n>>m;
	for(int i=1;i<=n;i++){
		cin>>a[i]>>b[i];
	}
	while(m--){
		int op,x,y,q;
		cin>>op;
		if(op==1){
			cin>>x>>y;
			a[x]+=y;
		}
		if(op==2){
			mp.clear();
			int k=0x3f3f3f3f,sum=0;
			cin>>q;
			int prepos=0,precnt=0;
			for(int i=1;i<=n;i++){
				mp[b[i]]+=a[i];
				if(mp[b[i]]>precnt){
					precnt=mp[b[i]];
					prepos=b[i];
				}
				val[i]=prepos*a[i];
			}
			for(int i=n;i>=1;i--){
				sum^=val[i];
				if(sum==q){
					k=min(k,n+1-i);
				}
			}
			cout<<k<<endl;
		}
	}
	return 0; 
} 
2025/1/21 15:01
加载中...