BZOJ 1697 [Usaco2007 Feb]Cow Sorting 牛排序


题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1697

题意:给出一个长度为 n 的序列,将该序列由小到大排序,支持操作交换任意两个数,代价为 w[i]+w[j],总代价最小...


离散化 w 序列,将给定序列交换为目标序列其实是这样一个置换....

$$\begin{pmatrix}
w_1&w_2&w_3&...&w_n\\
1&2&3&...&n
\end{pmatrix}$$

将该置换以循环形式表示,循环节之间互相都是独立的,分别计算每个循环节的贡献即可。显然对于长度为 n 的循环节只需要交换 n-1 次即可...

但是这样朴素的想法遗漏了一个情况:即将另一个元素换进循环节内辅助排序后再换出来,分别统计两个情况取 min 即可...

声明:zgz233|版权所有,违者必究|如未注明,均为原创|本网站采用BY-NC-SA协议进行授权

转载:转载请注明原文链接 - BZOJ 1697 [Usaco2007 Feb]Cow Sorting 牛排序


一个oier的博客 |注册功能过几天就修| 博客搬家啦,现在跑的飞快!

标签: ,