CF2019B All Pairs Segments 题解
SpringFullGarden · · 题解
题意
在数轴上有
每次查询,有有几个点恰好被
思路
观察下图。
可以发现,以第
整理得,覆盖了第
再考虑点不是给定的点。对于一个点,设它右边的第一个给定点是第
枚举
再枚举
代码
ll a[200005], b[200005];
map <ll, ll> c;
signed main() {
for(ll T = rd(); T--; ) {
ll n = rd(), Q = rd();
for(ll i = 1; i <= n; i++) a[i] = rd();
c.clear();
for(ll i = 1; i <= n; i++) b[i] = (n - i + 1) * i - 1, c[b[i]]++;
for(ll i = 2; i <= n; i++)
c[b[i] - (n - i)] += a[i] - a[i - 1] - 1;
while(Q--) {
ll x = rd();
cout << c[x] << ' ';
}
puts("");
}
return 0;
}