抱歉,您的浏览器无法访问本站

本页面需要浏览器支持(启用)JavaScript


了解详情 >

给一个长度为 2n2n 的序列,要求将其两两匹配成 nn 组,假设第 ii 组为 (xi,yi)(x_i,y_i),求 maxi=1n(xi+yi)modm\max_{i=1}^n(x_i+y_i)\bmod m 的最小值,1n105,1m109,0ai<m1\le n\le 10^5,1\le m\le 10^9,0\le a_i<m

我们首先我们有:

(x+y)modm={x+yx+ymx+ymx+y>m(x+y)\bmod m=\begin{cases} x+y&x+y\le m\\ x+y-m&x+y>m \end{cases}

接下来我们看几种情况:

如果我们有 x1x2x3x4x_1\le x_2\le x_3\le x_4,那么我们有这样 44 中情况:

第一种,x3+x4<mx_3+x_4<m,那显然 (x1,x4),(x2,x3)(x_1,x_4),(x_2,x_3) 更优。

第二种,x1+x2mx_1+x_2\ge m,和第一种一样。

第三种,{x1+x3<mx2+x4m\begin{cases}x_1+x_3<m\\x_2+x_4\ge m\end{cases},考虑到 x2+x4m<x2x_2+x_4-m<x_2,故有 max{x1+x3,x2+x4m}=x1+x3\max\{x_1+x_3,x_2+x_4-m\}=x_1+x_3,而考虑到 {x1+x2x1+x3x3+x4m<x3\begin{cases}x_1+x_2\le x_1+x_3\\x_3+x_4-m<x_3\end{cases},故有 max{x1+x3,x2+x4m}max{x1+x2,x3+x4m}\max\{x_1+x_3,x_2+x_4-m\}\ge \max\{x_1+x_2,x_3+x_4-m\}。所以 (x1,x2),(x3,x4)(x_1,x_2),(x_3,x_4) 一定比 (x1,x3),(x2,x4)(x_1,x_3),(x_2,x_4) 优。

我们再来看 (x1,x4),(x2,x3)(x_1,x_4),(x_2,x_3) 的情况。如果有 {x1+x4mx2+x3m\begin{cases}x_1+x_4\ge m\\x_2+x_3\ge m\end{cases},那就有 {x1+x4m<x1x2+x3m<x2\begin{cases}x_1+x_4-m<x1\\x_2+x_3-m<x_2\end{cases},所以 max{x1+x4m,x2+x3m}<x2max{x1+x2,x3+x4m}\max\{x_1+x_4-m,x_2+x_3-m\}<x_2\le \max\{x_1+x_2,x_3+x_4-m\},此时 (x1,x4),(x2,x3)(x_1,x_4),(x_2,x_3) 的方案更优。但是如果有 x1+x4mx_1+x_4\le m 或是 x2+x3mx_2+x_3\le m,则答案将会更大。

第四种,{x1+x4<mx2+x3<mx3+x6mx4+x5m\begin{cases}x_1+x_4<m\\x_2+x_3<m\\x_3+x_6\ge m\\x_4+x_5\ge m\end{cases}。根据前面的讨论,我们仅需比较 (x1,x4),(x2,x3),(x5,x6)(x_1,x_4),(x_2,x_3),(x_5,x_6)(x1,x2),(x3,x4),(x5,x6)(x_1,x_2),(x_3,x_4),(x_5,x_6) 即可,不难发现 {x1+x2x1+x4x3+x6m<x3x2+x3x4+x5mx5+x6m\begin{cases}x_1+x_2\le x_1+x_4\\x_3+x_6-m<x_3\le x_2+x_3\\x_4+x_5-m\le x_5+x_6-m\end{cases},于是 max{x1+x2,x3+x6m,x4+x5m}max{x1+x4,x2+x3,x5+x6m}\max\{x_1+x_2,x_3+x_6-m,x_4+x_5-m\}\le \max\{x_1+x_4,x_2+x_3,x_5+x_6-m\}

根据第一、二、三种情况,我们发现,最终的划分结果肯定是被分成两部分,左边部分最小的匹配,次大的和次小的匹配……右边也这样匹配。其中左边所有的匹配 (x,y)(x,y) 都有 x+y<mx+y<m,右边的匹配 (x,y)(x,y) 都有 x+ymx+y\ge m

根据第四种情况,我们可以发现蓝色的匹配数越多越好,于是我们考虑二分蓝色的匹配数量,最终确定答案。

代码可以看 这里

评论