令序列为 b[1…n]。对于每个位置 i,定义 xi=bimod2(xi=1 表示该位置是活跃点,xi=0 表示平静点)。定义前缀和数组
S[0]=0,S[i]=∑k=1ixk(1≤i≤n),
即 S[i] 表示前 i 个位置中活跃点的总个数。子段 b[i…j] 中包含的活跃点个数为 S[j]−S[i−1],当且仅当 S[j] 与 S[i−1] 奇偶性不同时,该子段活跃点个数为奇数,即该子段是一个脉冲子段。
对于一次查询区间 [l,r],我们要统计所有满足条件的子段 (i,j),满足
有一个长度为 n 的正整数序列 b1,b2,…,bn。对于每个位置 i,若 bi 不能被 2 整除,则称该位置为一个活跃点;否则称其为平静点。
现在定义:如果一个连续子段 bl,bl+1,…,br 中包含的活跃点个数不能被 2 整除,则称该子段为一个脉冲子段。
请处理 q 次询问,每次询问指定一个区间 [L,R],求出该区间内有多少个脉冲子段。
数据范围:序列长度 n 与询问次数 q 均不超过 2×105,序列中的每个正整数 bi 不超过 109。
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册