山外集训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}]\)
如果这些区间都不相交,我们显然可以直接算出

\[\begin{align*} ans &= (r - l + 1) + (2r - 1 - 2l - 1 + 1) + \cdots\\ &+(tr - \textstyle\frac{t(t - 1)}{2} - tl - \textstyle\frac{t(t - 1)}{2} + 1)\\ &=(1+2+\cdots t)(r - l) - \sum_{i = 1}^t(i(i - 1)) + t\\ &=\textstyle\frac{t(t + 1)}{2}(r - l) - \displaystyle\sum^t_{i = 1}i^2 + \sum_{i = 1}^ti + t\\ &=\textstyle\frac{t(t + 1)}{2}(r - l) - \frac{t(t + 1)(2t +1 )}{6} + \frac{t(t + 1)}{2} + t \end{align*} \]

不过现实总没有那么美好。
实际上,有许多区间是相交的,我们无法直接累加和。
所以我们考虑哪些区间是相交的。
假设第 \(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

posted @ 2026-07-29 19:35  SigmaToT  阅读(11)  评论(0)    收藏  举报