求助,关于运行效率
  • 板块学术版
  • 楼主DWT8125
  • 当前回复4
  • 已保存回复4
  • 发布时间2024/11/25 16:55
  • 上次更新2024/11/25 19:53:30
查看原帖
求助,关于运行效率
390228
DWT8125楼主2024/11/25 16:55

rt,这份是我写某题的部分代码

#include<cstdio>
#include<cmath>
#include<algorithm>
using namespace std;
const int N=2e5+5,T=450;
int n,t,tot,cnt,a[N],ta[N],f[N],c[T][N],va[T],lt[T];
int main(){
	scanf("%d",&n); t=(int)sqrt(n);
	for(int i=1;i<=n;++i){
		scanf("%d",&a[i]);
		ta[i]=a[i];
	}
	sort(ta+1,ta+n+1);
	tot=unique(ta+1,ta+n+1)-ta-1;
	for(int i=1;i<=n;++i)
		a[i]=lower_bound(ta+1,ta+tot+1,a[i])-ta;
	for(int i=1;i<=n;++i)
		for(int j=1;j<=t;++j) ++c[j][a[i]];
	return 0;
}

结果发现后面的根号部分跑得奇慢(指1.2s 3e7),但把c[j][a[i]]改成c[j][i]或其他东西,或者不读入a[i]就跑得飞快,故求原因&解决方案

2024/11/25 16:55
加载中...