【NOI Online 2022 提高组 C】【洛谷 P8252 】如何正确地排序题解

本文探讨了二维偏序问题的解决方法,通过巧妙地避免拆分min和max操作,将问题简化并提出了两种解决方案:一是使用cdq分治或多维树套树;二是通过枚举并计算特定顺序下的贡献值来简化问题。

Description

传送门

Solution

首先考虑将 min ⁡ , max ⁡ \min,\max min,max 给拆开。二者同理,我们不妨仅考虑求前者。

对于 m = 2 m=2 m=2 的情况可以随便做。下面我们先考虑 m = 3 m=3 m=3 的情况。

首先,明确所要求即 ∑ 1 ≤ i , j ≤ m max ⁡ 1 ≤ k ≤ 3 { a k , i + a k , j } \sum_{1 \le i,j \le m} \max_{1 \le k \le 3}\{a_{k,i}+a_{k,j}\} 1i,jm1k3max{ ak,i+ak,j}

不难想到给所有的 a k , i + a k , j a_{k,i}+a_{k,j} ak,i+ak,j 钦定一个唯一的最大值。换言之,我们需要加入第二个关键字。于是,我们不妨把 k k k 作为第二关键字,钦定在 a k , i + a k , j a_{k,i}+a_{k,j} ak,i+ak,j 相同时较小的 k k k 被计入 max ⁡ \max max 中。

我们枚举一行,并计算该行对答案的总贡献。假设枚举到的是第一行,那么我们要对于每一对满足 1 ≤ i , j ≤ n 1 \le i,j \le n 1i,jn a 2 , i + a 2 , j ≤ a 1 , i + a 1 , j a_{2,i}+a_{2,j} \le a_{1,i}+a_{1,j} a2,i+a

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值