七夕祭(bzoj3032权限题,同codevs2485)

本文探讨了一个关于将有价值摊位均匀分布于N行M列网格中的问题,目标是最少交换次数下使每行每列的价值摊位数目相同。通过环形均分纸牌模型和中位数方法给出了解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Problem

N行M列,共N*M个摊位,其中有T个是有价值的(即喜爱的)。每次可以交换相邻两个摊位(每一行或每一列最后一个位置也算相邻)。现在想要各行中有价值的摊位数相同,各列中有价值的摊位数也要相同。求最少的交换次数。

Solution

首先,同一列中的交换只会影响行,同一行中的交换只会影响列。所以我们可以分开考虑行与列这两个问题。我做题时有一个疑问——空间结构会不会影响交换呢?如果两列中在同一行均有喜爱摊位,是不可以交换的。emmm,自己画个图就会发现我多虑了。

那若是只考虑行(或列),我们自然而然联想到环形均分纸牌模型——每行(或列)原始所含有的喜爱摊位数量为初值,相邻两个行(或列)可以互相给,要求给的摊次最少。进而,设个未知数,列个方程,利用绝对值不等式得出结论,就可以用中位数解决了(hzwer学长在2656中已经写过,就不再多说了)。复杂度O(nlogn + mlogm)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值