求助复杂度
查看原帖
求助复杂度
637073
wujingfey楼主2023/10/18 09:49

如下是我预处理第 i→ji\to j 块内的众数和众数出现次数的代码,tongi,jtong_{i,j} 是 jj 到 ii 块的前缀和,maxxmaxx 是指出现次数,maxxxmaxxx 是指众数。这个复杂度应该是 O(n×n×n)=O(n2)O(\sqrt{n}\times \sqrt{n}\times n)=O(n^2) 啊,但过了,且不开 O2O2 最慢的一个点只有 686ms686ms.

for(int i=1;i<=t;i++){//起点块 
		for(int j=i;j<=t;j++){//终点块
			int res=0,num=INF;
			for(int k=st[i];k<=ed[j];k++){//块内每一个元素 
				if(tong[j][a[k]]-tong[i-1][a[k]]>res){
					res=tong[j][a[k]]-tong[i-1][a[k]];
					num=a[k];
				}else if(tong[j][a[k]]-tong[i-1][a[k]]==res){
					num=min(num,a[k]);
				}
			}
			maxx[i][j]=res,maxxx[i][j]=num;
		}
	}
2023/10/18 09:49
加载中...