RT
莫队的一个部分转移:
if(nl < l) {
const __m512i RRR = _mm512_set1_epi32(r);
int b;
for(b = nl; b + 16 < l; b += 16)
pk.v = _mm512_mask_add_epi32(pk.v,
_mm512_cmplt_epi32_mask(RRR, Load(&nn[b])) &
_mm512_cmple_epi32_mask(Load(&n[b]), RRR),
pk.v, onemask);
for(; b < l; b++) pk.dt[0] += ((r < nn[b]) & (n[b] <= r));
l = nl;
}
建议加强到 5⋅106。