
逆序对
ACkingdom
这个人很懒,什么都没有留下
展开
-
洛谷-P1966 火柴排队(归并排序or树状数组求逆序对进阶+离散化)
题目链接 题意: 给你两个数组,相邻两个数字之间可以互换位置,求交换位置至少多少次后可以使得∑(ai-b)^2最小。 思路: 离散化a[i]与b[i]数组后开一个c[i]数组令c[a[i]]=b[i],求c[i]数组的逆序对个数即可。 代码: 树状数组代码: #include<bits/stdc++.h> using namespace std; #define int long long #define IOS ios::sync_with_stdio(false);cin.tie(0);co原创 2020-06-09 21:29:27 · 185 阅读 · 0 评论 -
洛谷-P1908 逆序对(树状数组,离散化)
题目链接 题意: 求大小为n的数组中有多少个逆序对。 思路: 因为n<=1e5,但是a[n]<=1e9,而且这道题和每一个a[i]的具体数值并没有任何关系,所以我们要用到离散化思想,将a[n]中的数字排序后重新赋值。之后就是正常的树状数组求逆序对方法。 代码: #include<bits/stdc++.h> using namespace std; #define int long long #define IOS ios::sync_with_stdio(false);cin.ti原创 2020-06-03 20:33:46 · 231 阅读 · 0 评论 -
ACWING-241.楼兰图腾(利用树状数组求逆序对)
题目链接 题意: 西部314在楼兰古城的下面发现了一幅巨大的壁画,壁画上被标记出了N个点,经测量发现这N个点的水平位置和竖直位置是两两不同的。 西部314认为这幅壁画所包含的信息与这N个点的相对位置有关,因此不妨设坐标分别为(1,y1),(2,y2),…,(n,yn),其中y1~yn是1到n的一个排列。 西部314打算研究这幅壁画中包含着多少个图腾。 如果三个点(i,yi),(j,yj),(k,yk)满足1≤i<j<k≤n且yi>yj,yj<yk,则称这三个点构成V图腾; 如果三个点原创 2020-06-01 20:14:33 · 298 阅读 · 0 评论