Handsome Swap(0443)

Time limit(ms): 1000 Memory limit(kb): 65535 Submission: 89 Accepted: 20 Accepted
 
问题描述
所谓HandSome Swap是指对一串给定的数字,每次交换相临的元素(如 3 2 4 ,只能交换3 2 或2 4 而不能交换3 4),直到最终将这串数字变为升序排列。现在,你要做的就是计算用HandSome Swap将一堆数字变为升序所需的最小次数。
 
输入
只包含一个case.第一行为这堆数的个数N(0 < N < 1000000),下面跟着N行数据,每行代表一个数字ni,(0 < ni < 100000000). 
 
输出
输出进行HandSome Swap的次数。 
 
样例输入
3
3
1
2
 
样例输出
2
 
Hint
SCS
 
归并排序 = =
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
#define maxn 1000010
 
int a[maxn];
long ans;
int tmp[maxn];
 
void merge(int s1,int e1,int s2,int e2)
{
    int i=s1,j=s2,k=;
    while(i<=e1 && j<=e2)
    {
        if(a[i]<=a[j])
            tmp[k++]=a[i++];
        else
        {
            tmp[k++]=a[j++];
            ans+=e1-i+;
        }
    }
    while(i<=e1) tmp[k++]=a[i++];
    while(j<=e2) tmp[k++]=a[j++]; //复制表中剩下部分
    for(i=s1;i<=e2;i++) //复制回去
    {
        a[i]=tmp[i-s1];
    }
}
void merge_sort(int low,int high)
{
    if(low<high)
    {
        int mid=(low+high)/;    
        merge_sort(low,mid);       //后半部分
        merge_sort(mid+,high);    //前半部分
        merge(low,mid,mid+,high); //各并表
    }
}
int main()
{
    int n,i;
    ans=;
    scanf("%d",&n);
    for(i=;i<n;i++)
    {
        scanf("%d",&a[i]);
    }
    merge_sort(,n-);
    printf("%ld\n",ans);
    return ;
}

最新文章

  1. 使用win10远程控制ubuntu16.04
  2. iOS程序 防止动态调试和代码注入
  3. @ModelAttribute 注解及 POJO入参过程
  4. brute-force search
  5. 在 Linux 的 KVM虚拟机 上安装 Mac OS 系统的研究总结
  6. C++中的const关键字的用法
  7. struts2中的方法过滤拦截器
  8. Sql语句之select 5种查询
  9. debian软件安装基础(同tomcat案件)
  10. 1596: [Usaco2008 Jan]电话网络
  11. JEECG 3.8宅男优化版本发布
  12. C++面试基础概念之动态库篇
  13. 【Android】解析AccessibilityService(辅助服务)的使用
  14. group_concat的使用
  15. Django框架(四)
  16. 【Linux】Centos之安装Nginx及注意事项
  17. SQL、Linq和Lambda表达式 的关系
  18. jQuery学习总结1
  19. PHP高级教程-安全邮件
  20. merge sort 的javascript实现

热门文章

  1. C#与C++相比较之STL篇
  2. memcached 在windows下安装及启动
  3. 网页clientWidth等相关
  4. 一步步学习ASP.NET MVC3 (14)——Route路由
  5. Amazon Alexa 语音识别2 : 设置
  6. C3p0的参数设置
  7. shell 流程控制
  8. 九张图让你的PPT立刻高大上
  9. 理解sparse coding
  10. Linux下 config/configure/Configure、make 、make test/make check、sudo make install 的作用