https://ac.nowcoder.com/acm/contest/1001/C
题面
Vani预先联系了七夕祭的负责人zhq,希望能够通过恰当地布置会场,使得各行中cl感兴趣的摊点数一样多,并且各列中cl感兴趣的摊点数也一样多。
不过zhq告诉Vani,摊点已经随意布置完毕了,如果想满足cl的要求,唯一的调整方式就是交换两个相邻的摊点。两个摊点相邻,当且仅当他们处在同一行或者同一列的相邻位置上。由于zhq率领的TYVJ开发小组成功地扭曲了空间,每一行或每一列的第一个位置和最后一个位置也算作相邻。现在Vani想知道他的两个要求最多能满足多少个。在此前提下,至少需要交换多少次摊点。
1≤N,M≤1000001,0≤T≤min(N×M,100000),1≤x≤N,1≤y≤M。
分析
考虑行和列互不影响,可以分开做,这变成了首尾相接的均分纸牌问题
考虑普通的均分纸牌,通过找规律可以发现,将1张纸牌移到相邻位置只会有一个前缀和数组变化1
所以所需要移动的最少次数为\(\sum_{i=1}^{n} |S_i-\frac{t}{n}|\)
如果首尾相接,显然有一对相邻的不用相互交换
枚举断点为K,则前缀和数组变为\(S_K-S_{K-1},S_{K+1}-S_{K-1},……,S_n-S_{K-1},S_1+S_n-S_{K-1},S_2+S_n-S_{K-1},……,S_{K-2}+S_n-S_{K-1}\)