HDU 1394 Minimum Inversion Number 线段树和逆序数的应用
来源:互联网 发布:windows mobile 手机 编辑:程序博客网 时间:2024/05/16 16:26
地址:http://acm.hdu.edu.cn/showproblem.php?pid=1394
题意:给出n个数,通过移动,求最小的逆序数对
题解:
1.主要代码:
sum = sum + (n - 1 - arr2[i]) - arr2[i];2.用线段树求初始数组的逆序数对,然后用上面的代码求出最小的逆序数对
#include<iostream>#include<algorithm>using namespace std;#define lx (root<<1)#define rx ((root<<1)|1)#define mid ((left+right)>>1)#define maxs 5010int arr[maxs];int arr2[maxs];int temp[maxs];int n,sum;void put_up(int left ,int right){int cur = 1;int i = left;int j = mid + 1;while (i <= mid && j <= right){if (arr[i] < arr[j])temp[cur++] = arr[i++];else{temp[cur++] = arr[j++];sum += mid - i + 1;}}while (i<=mid)temp[cur++] = arr[i++];while (j<=right)temp[cur++] = arr[j++];for (int k = 1; k < cur;k++){arr[left++] = temp[k];}}int update(int root, int left, int right){if (left == right)return 0;update(lx, left, mid);update(rx, mid + 1, right);put_up(left, right);}int main(){while (scanf("%d", &n) != EOF){sum = 0;for (int i = 1; i <= n; i++){scanf("%d", &arr[i]);arr2[i] = arr[i];}update(1,1,n);int mins = sum;for (int i = 1; i < n; i++){sum = sum + (n - 1 - arr2[i]) - arr2[i];if (mins > sum)mins = sum;}printf("%d\n", mins);}}
0 0
- HDU 1394 Minimum Inversion Number 线段树和逆序数的应用
- HDU 1394 Minimum Inversion Number 线段树求逆序数
- HDU 1394 Minimum Inversion Number(线段树,逆序数)
- HDU 1394 Minimum Inversion Number (线段树+最小逆序数)
- hdu 1394 Minimum Inversion Number 线段树 逆序数
- hdu 1394 Minimum Inversion Number 线段树求逆序数
- 线段树求逆序数 hdu 1394 Minimum Inversion Number
- HDU 1394 Minimum Inversion Number【线段树求逆序数】
- HDU 1394- Minimum Inversion Number(线段树求逆序数)
- HDU-1394-Minimum Inversion Number-线段树+逆序数
- HDU 1394 Minimum Inversion Number(线段树+逆序数)
- HDU 1394 Minimum Inversion Number 最小逆序数 线段树
- HDU 1394 Minimum Inversion Number // 线段树求逆序数
- HDU 1394 Minimum Inversion Number(线段树求逆序数)
- hdu 1394 Minimum Inversion Number 线段树求逆序数
- hdu 1394 Minimum Inversion Number 线段树求逆序数
- HDU 1394 Minimum Inversion Number(线段树求逆序数)
- 【Hdu】Minimum Inversion Number(逆序,线段树)
- Windows下的实用指令
- 父窗口采用js控制iframe页面样式
- Java为什么不支持多继承
- 传智播客字节流四种方式复制文件
- C# winfrom数据库备份与恢复
- HDU 1394 Minimum Inversion Number 线段树和逆序数的应用
- 12c 简单至极的静默方式创建数据库
- Project Euler:Problem 22 Names scores
- java内存堆和栈
- ERWin7.2在Windows 8.1中生成数据库遇到的问题!
- AdaBoost中利用Haar特征进行人脸识别算法分析与总结1——Haar特征与积分图
- Single Number
- HBase 常用Shell命令
- JQuery基础选择器及过滤选择器的用法,今天刚学,写一下加深印象