山外集训Day2
题面及题解:
https://files.cnblogs.com/files/blogs/832279/down.zip?t=1785324658&download=true
或者也可以看我写的题解。。。
T1
我们考虑到对于选一个数,选出的值域区间为 \([l, r]\)。
选两个数,选出的值域区间为 \([l + (l + 1), r + (r - 1)]\)。
...
选 \(k\) 个数,选出的值域区间为 \([l + (l + 1) + \cdots + l + (k - 1), r + (r - 1) + \cdots + (r - (k - 1))] = [kl + \frac{k(k - 1)}{2},kr - \frac{k(k - 1)}{2}]\)。
如果这些区间都不相交,我们显然可以直接算出
不过现实总没有那么美好。
实际上,有许多区间是相交的,我们无法直接累加和。
所以我们考虑哪些区间是相交的。
假设第 \(x\) 和第 \(x + 1\) 个区间相交。
那么 \((x + 1)l + \frac{x(x + 1)}{2}\le xr + \frac{x(x - 1)}{2}\),这是一个一元二次不等式。
如果判别式小于 \(0\),那么永不相交,直接输出上面那个 \(ans\) 即可。
否则算出解 \(x_1, x_2\),并让 \(x_1 = \lceil x_1\rceil,x_2 = \lfloor x_2\rfloor\),则 \(x_1\sim x_2 + 1\) 这些区间都相交,连成一个超大的区间。
对于这个超大区间,我们直接算出右端点 \(r'\) 和左端点 \(l'\),则它的贡献就是 \(r' - l' + 1\)。
对于其它的散区间,我们直接像上面的 \(ans\) 一样计算就可以了。
T2 \(\sim\) T4
都没怎么搞明白。。。
讲的题:
https://files.cnblogs.com/files/blogs/832279/构造.zip?t=1785324882&download=true

浙公网安备 33010602011771号