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 ;
}

[swustoj 443] Handsome Swap的更多相关文章

  1. 故障重现(内存篇2),JAVA内存不足导致频繁回收和swap引起的性能问题

    背景起因: 记起以前的另一次也是关于内存的调优分享下   有个系统平时运行非常稳定运行(没经历过大并发考验),然而在一次活动后,人数并发一上来后,系统开始卡. 我按经验开始调优,在每个关键步骤的加入如 ...

  2. IIS服务器多域名证书绑定443端口解决方案

    一个服务器IIS要绑定多个HTTPS站点(该方法在此之前,有进行测试其他网站域名的ssl证书,测试没有问题) 默认情况一个服务器的IIS只能绑定一个HTTPS也就是443端口 要实现多个站点对应HTT ...

  3. LVM 管理减少swap分区空间增加到根分区

    简介 LVM是 Logical Volume Manager(逻辑卷管理)的简写,它是Linux环境下对磁盘分区进行管理的一种机制,它由Heinz Mauelshagen在Linux 2.4内核上实现 ...

  4. [LeetCode] Swap Nodes in Pairs 成对交换节点

    Given a linked list, swap every two adjacent nodes and return its head. For example,Given 1->2-&g ...

  5. 如何在Linux上使用文件作为内存交换区(Swap Area)

    交换区域(Swap Area)有什么作用? 交换分区是操作系统在内存不足(或内存较低)时的一种补充.通俗的说,如果说内存是汽油,内存条就相当于油箱,交换区域则相当于备用油箱. Ubuntu Linux ...

  6. 解决apache 443端口被占用

    检测 错误 httpd.exe -w -n "apache" -k start , 进入Apache的安装目录, 搜索httpd-ssl.conf,httpd-ahssl.conf ...

  7. XOR Swap

    swap(a, b): a ^= b b ^= a a ^= b 先明确一下,a ^ a = 0,同时对于一切数x ^ 0 = x 可以这样理解,第三行: b ^= a b ^= a ^ b b = ...

  8. 疑难问题解决备忘录(2)——ubuntu12.04分配swap

    分配swapdd if=/dev/zero of=Swap.disk bs=1M count=6k (count=1k创建1G的Swap,如果要创建6G则count=6k:这步比较慢) 创建swap文 ...

  9. Linux上的free命令详解、swap机制

    Linux上的free命令详解   解释一下Linux上free命令的输出. 下面是free的运行结果,一共有4行.为了方便说明,我加上了列号.这样可以把free的输出看成一个二维数组FO(Free ...

随机推荐

  1. 几个app maker的网站

    简网APP工场:http://www.cutt.com/app 爱传iappk:http://www.iappk.com 安米网:http://www.appbyme.com/mobcentACA/i ...

  2. C++ 中的“ !” 运算

    在介绍“ !”运算之前,我们要知道一个变量n,如果n>0,那么我们可以在逻辑上叫它“真”,如果n<=0 ,那么我们可以在逻辑上叫它“假”. n为真时,!n就为假(false),转换为整型值 ...

  3. LeetCode FindMinimuminRotatedSorteArray &&FindMinimuminRotatedSorteArray2

    LeetCode上这两道题主要是使用二分搜索解决,是二分搜索算法的一个应用,根据条件每次舍弃一半,保留一半. 首先第一题: FindMinimuminRotatedSorteArray(时间复杂度为二 ...

  4. centos 6.4 samba 权限 selinux权限配置

    http://www.cnblogs.com/xiaoluo501395377/archive/2013/05/26/3100444.html(参考) SELINUX 策略 配置好samba后, 输入 ...

  5. 关于APP,原生和H5开发技术的争论

    App的开发技术,目前流行的两种方式,原生和Html5.原生分了安卓平台和ios平台(还有小众的黑莓.死去的塞班就不说了),H5就是Html5. 目前争论不休的问题,在早先前争论CS,BS架构的软件系 ...

  6. javascript cookie 操作

    <html> <head> <meta charset="utf-8"> <title>Javascript cookie</ ...

  7. MVC+EF 随笔小计——NuGet程序包管理

    安装EF 打开 工具-库程序包管理器-程序包管理器控制台 输入 install-package entityframework 去MSDN上查看下EF的架构图:http://msdn.microsof ...

  8. 简单的powershell 批量生成身份证复印件

    用Powshell 脚本批量完成,代码比较简单,出生日期,图片我都没有改,图片用于测试,附件. cls; $path = Split-Path -Parent $MyInvocation.MyComm ...

  9. Python设计模式——外观模式

    外观模式跟代理模式有点像,都是在client和目标的类之间建一个中间的类,client不直接调用目标的类,而是通过先调用中间类的方法,由中间类来实现怎么调用目标类. 代理模式用这种模式的目的是可以实现 ...

  10. c# 判断窗体是否永在最前(TopMost),调用windows API

    许多程序都可以把自身的窗体设为最前显示状态,这个可以参考博客c#让窗体永在最前 调用windows api 将窗体设为topmost.那么如何判断桌面上的一个窗体是否为最前显示状态呢,不光是自己的程序 ...