题目
链接
题意简述
有两列共 支火柴
两列火柴之间的距离定义为:
通过交换使得两列火柴之间的距离最小,出这个最小交换次数对 99,999,997 取模。
思路
逆序对
通过数学归纳法 (雾 易发现将两列火柴排序后距离最小。
不接受反驳。
就成了归并排序。
排序后记录对应关系,跑一遍树状数组即可。
时间复杂度: $O(nlogn)$ 。
代码
1 |
|
杂项
- 这里记录相对位置用了 $std::pair$ 实现,还是 $std::pair$ 大法好!
蒟蒻的博客
有两列共 支火柴
两列火柴之间的距离定义为:
通过交换使得两列火柴之间的距离最小,出这个最小交换次数对 99,999,997 取模。
通过数学归纳法 (雾 易发现将两列火柴排序后距离最小。
不接受反驳。
就成了归并排序。
排序后记录对应关系,跑一遍树状数组即可。
时间复杂度: $O(nlogn)$ 。
1 | #include <bits/stdc++.h> |