问预处理哪里错了
查看原帖
问预处理哪里错了
361342
┭┮﹏┭┮楼主2024/1/28 19:45
scanf("%lld",&n);
	for(int i = 1;i <= 6e7;i++)p[i] = p[i-lowbit(i)] + 1;//这里
	for(int i = 1;i <= n;i++){
 		scanf("%lld",&a[i]);
		v[a[i]]++;
	}
	for(int i = 0;i <= M;i++)
	    if(v[i])s[++m] = i;
	for(int i = 1;i <= m;i++){
		for(int j = 1;j <= m;j++){
			ans += 1ll * v[s[i]] * v[s[j]] * (p[s[i] + s[j]]+ p[abs(s[i]-s[j])]);
            //这里改为log的直接判定就对了,不然70
		}
	}
2024/1/28 19:45
加载中...