由于讲题讲得太急,具体处理两行的操作只是“随便”地讲了一下,但怎么操作很关键(这里仅作参考,实测最大595799 )
对于n=2的情况
大概是如下这个图
对于n> 2的情况
对于现在考虑的行数
l
∼
r
l\sim r
l∼r,都有
a
i
,
j
∈
[
l
,
r
]
a_{i,j}\in[l,r]
ai,j∈[l,r](一开始是这样)
可以考虑将其分成
l
∼
m
i
d
l\sim mid
l∼mid 和
m
i
d
+
1
∼
r
mid+1\sim r
mid+1∼r 两部分
然后枚举左区间的
i
i
i和右区间的
j
j
j,把大于mid的数看做2,把其它数看作1,进行上述操作
接着分治做下去
贴士
直接把大于mid的数看做2,把其它数看作1时,有时两个行的数中大于mid的数很多,有时不大于mid的数很多,导致1和2的数量不一致,会卡进死循环,所以以大于mid这个条件作为第一关键字,然后对1多出的点标记为2,对2多的点标记为1