Codeup墓地-1098
src:http://codeup.cn/problem.php?id=1098

1098: 最少的交换
时间限制: 1 Sec 内存限制: 32 MB
题目描述
现在给你一个由n个互不相同的整数组成的序列,现在要求你任意交换相邻的两个数字,使序列成为升序序列,请问最少的交换次数是多少?
输入
输入包含多组测试数据。每组输入第一行是一个正整数n(n<500000),表示序列的长度,当n=0时。
接下来的n行,每行一个整数a[i](0<=a[i]<=999999999),表示序列中第i个元素。
输出
对于每组输入,输出使得所给序列升序的最少交换次数。
样例输入
5
9
1
0
5
4
3
1
2
3
0
样例输出
6
0

//归并排序,结果A也是从小到大排好序的
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
vector<int> A;
int N;ll merge_count(vector<int> &a){int n=a.size();if(n<=1){return 0;}ll cnt =0;vector<int> b(a.begin(),a.begin()+n/2);vector<int> c(a.begin()+n/2,a.end());cnt+=merge_count(b);cnt+=merge_count(c);//此时b和c已经分别排好序了int ai=0,bi=0,ci=0;//合并两部分并计算逆序数while(ai<n){if(bi<b.size()&&(ci==c.size()||b[bi]<=c[ci])){a[ai++]=b[bi++];}else{//逆序数计算//如若bi>ci,则这在B序列中从bi开始到结束的数都比ci大//这些数的数量为n/2-bicnt+=n/2-bi;a[ai++]=c[ci++];}}return cnt;
}int main(){int c;while(cin>>N&&N){for(int i=0;i<N;i++){scanf("%d",&c);A.push_back(c);}printf("%lld\n",merge_count(A));A.clear();}return 0;
}

Codeup墓地-1098相关推荐

  1. Codeup墓地-1123

    Codeup墓地-1123 src:http://codeup.cn/problem.php?id=1123 1123: 确定排序序列 时间限制: 1 Sec 内存限制: 32 MB 题目描述 一个由 ...

  2. Codeup墓地-1107

    Codeup墓地-1107 src:http://codeup.cn/problem.php?id=1107 1107: 欧几里得游戏 时间限制: 1 Sec 内存限制: 32 MB 题目描述 小明和 ...

  3. Codeup墓地1817号A+B

    Codeup墓地链接:http://codeup.cn/ 本题链接:http://codeup.cn/problem.php?cid=100000575&pid=1 问题描述: 问题 B: A ...

  4. Codeup墓地-2337

    Codeup墓地-2337 src:http://codeup.cn/problem.php?id=2337 2337: 阻击火箭队 时间限制: 1 Sec 内存限制: 32 MB 题目描述 小明很喜 ...

  5. Codeup墓地-1985

    Codeup墓地-1985 src:http://codeup.cn/problem.php?id=1985 1985: 任务调度 时间限制: 1 Sec 内存限制: 32 MB 题目描述 读入任务调 ...

  6. Codeup墓地-2118

    Codeup墓地-2118 src:http://codeup.cn/problem.php?id=2118 2118: 非常可乐 时间限制: 1 Sec 内存限制: 32 MB 题目描述 大家一定觉 ...

  7. Codeup墓地-2117

    Codeup墓地-2117 src:http://codeup.cn/problem.php?id=2117 2117: 确定比赛名次 时间限制: 1 Sec 内存限制: 32 MB 题目描述 有N个 ...

  8. Codeup墓地-2070

    Codeup墓地-2070 src:http://codeup.cn/problem.php?id=2070 2070: 坠落的蚂蚁 时间限制: 1 Sec 内存限制: 32 MB 题目描述 一根长度 ...

  9. Codeup墓地-1104

    Codeup墓地-1104 src:http://codeup.cn/problem.php?id=1104 1104: 棋盘问题 时间限制: 1 Sec 内存限制: 32 MB 题目描述 在一个给定 ...

最新文章

  1. 如何分辨Web前端培训机构的好坏
  2. 安装discuz论坛mysqli解决方法
  3. cout 输出指定位数,不足补0
  4. 看视频学编程之最最基础的基础(1)
  5. Python - 装饰器
  6. bigdecimal正确用法_BigDecimal使用实践和注意事项
  7. MySQL(2)--MYSQL 安装
  8. linux端口混杂模式,linux端口混杂模式简介~
  9. java 和mysql 时间_java和mysql之间的时间日期类型传递
  10. python corrupt extra field_求救,作业完全不会写啊
  11. 海绵城市工程_打造透水“民心路”、共创海绵“生态城”|市政工程管理处持续推进城市道路“黑臭水体改造”工程...
  12. java mysql存储图片_Java存储图片到Mysql
  13. group by 深入总结
  14. SSM+Vue音乐在线试听网站系统java项目源码
  15. dtw算法 c语言实现,DTW算法的python实现
  16. 直流无刷电机工作原理
  17. android蓝牙传输文件到mysql_使用Android将图像发送到MySQL数据库
  18. 树莓派声音输出设置_树莓派3 之 音响配置
  19. PS四种扁平化设计风格
  20. 常见的电脑运行卡顿原因及解决方法

热门文章

  1. 基于JAVA宠物店管理系统计算机毕业设计源码+数据库+lw文档+系统+部署
  2. vue中echarts调用接口_在vue2中使用echarts (Vue-ECharts插件)
  3. Node接入支付宝开放平台的沙箱实现支付功能
  4. android recyclerview 水平,使用RecyclerView实现水平列表
  5. 正常情况下的货币,财富及汇率
  6. 利用CSS3的transition属性模仿鼠标移入闪光灯效果
  7. 分享一个程序员专属的搜索主页
  8. 小米、OPPO、vivo的“枪手博弈”,小米会先出局?
  9. java stomp_Spring Boot实现STOMP协议的WebSocket的方法步骤
  10. Bringing up interface eth0: Device eth0 does not seem to be present, delaying initialization.