单点,利用线段树解题,看到数据大小一定要敏感,说不定就是暗藏的解题思路

 #include <stdio.h>
#define lson l,mid,id<<1
#define rson mid+1,r,id<<1|1
const int MM= ;
int sum[MM<<]; void build_tree(int l,int r,int id)
{
sum[id]=;
if(l==r)
{
return;
}
else
{
int mid=(l+r)>>;
build_tree(lson);
build_tree(rson);
} }
int Query(int L,int R,int l,int r,int id)
{
if(L<=l&&r<=R)
{
return sum[id];
}
else
{
int mid=(l+r)>>;int ret=;
if(L<=mid)ret+=Query(L,R,lson);
if(R>mid)ret+=Query(L,R,rson);
return ret;
}
}
void update(int pos,int l,int r,int id)
{
if(l==r)
{
sum[id]++;return;
}
else{
int mid=(l+r)>>;
if(pos<=mid)update(pos,lson);
if(pos>mid)update(pos,rson);
sum[id]=sum[id<<]+sum[id<<|];
}
}
int main()
{
int n,i,seg[MM];
while(~scanf("%d",&n))
{
build_tree(,n-,);
int ans=;
for(i=;i<n;i++)
{
scanf("%d",&seg[i]);
ans+=Query(seg[i],n-,,n-,);
/*
+比seg[i]大的数,按输入顺序,因为每个数都不会超过n,所以简单了许多
*/
update(seg[i],,n-,);
}
int min=ans;
for(i=;i<n;i++)
{
ans+=n-seg[i]*-;
/*
比seg[i]小的-seg[i],seg[i]移到最后,+(n-seg[i]-1)
*/
if(ans<min)
{
min=ans;
}
}
printf("%d\n",min );
}
}

HDU 1394的更多相关文章

  1. HDU 1394 Minimum Inversion Number(线段树/树状数组求逆序数)

    Minimum Inversion Number Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java ...

  2. HDU 1394 Minimum Inversion Number(线段树的单点更新)

    点我看题目 题意 :给你一个数列,a1,a2,a3,a4.......an,然后可以求出逆序数,再把a1放到an后,可以得到一个新的逆序数,再把a2放到a1后边,,,,,,,依次下去,输出最小的那个逆 ...

  3. hdu 1394 线段树

    Minimum Inversion Number Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java ...

  4. HDU.1394 Minimum Inversion Number (线段树 单点更新 区间求和 逆序对)

    HDU.1394 Minimum Inversion Number (线段树 单点更新 区间求和 逆序对) 题意分析 给出n个数的序列,a1,a2,a3--an,ai∈[0,n-1],求环序列中逆序对 ...

  5. HDU 1394——Minimum Inversion Number——————【线段树单点增减、区间求和】

    Minimum Inversion Number Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & ...

  6. HDU 1394 Minimum Inversion Number(线段树求最小逆序数对)

    HDU 1394 Minimum Inversion Number(线段树求最小逆序数对) ACM 题目地址:HDU 1394 Minimum Inversion Number 题意:  给一个序列由 ...

  7. 线段树 逆序对 Minimum Inversion Number HDU - 1394 Laptop

    Minimum Inversion Number HDU - 1394 求最小反转数,就是求最少的逆序对. 逆序对怎么求,就是先把所有的数都初始化为0,然后按照顺序放入数字,放入数字前查询从这个数往后 ...

  8. HDU 1394 Minimum Inversion Number ( 树状数组求逆序数 )

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1394 Minimum Inversion Number                         ...

  9. hdu 1394 Minimum Inversion Number(树状数组)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1394 题意:给你一个0 — n-1的排列,对于这个排列你可以将第一个元素放到最后一个,问你可能得到的最 ...

  10. HDU 1394 Minimum Inversion Number(线段树求逆序对)

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1394 解题报告:给出一个序列,求出这个序列的逆序数,然后依次将第一个数移动到最后一位,求在这个过程中 ...

随机推荐

  1. ORACLE添加表约束的语法示例

    转自:http://jingyan.baidu.com/article/f54ae2fccda68d1e93b84942.html 示例: --班级表 CREATE TABLE TCLASS( cl_ ...

  2. Oracle将表keep到内存

    一.引言: 有时候一些基础表需要非常的频繁访问,尤其是在一些循环中,对该表中的访问速度将变的非常重要.为了提高系统的处理性能,可以考虑将一些表及索引读取并保存到内存中. 二.关于keep内存的几个参数 ...

  3. 深入浅出Windows Phone 8应用开发

    刚刚拿到<深入浅出Windows Phone 8应用开发>这本书,开始捣鼓我的Nokia Lumia 925T,已经有开发一个属于自己的App的想法了,计划先不公布了,等我这个App上线了 ...

  4. 使用Symfony 2在三小时内开发一个寻人平台

    简介 Symfony2是一个基于PHP语言的Web开发框架,有着开发速度快.性能高等特点.但Symfony2的学习曲线也比 较陡峭,没有经验的初学者往往需要一些练习才能掌握其特性. 本文通过一个快速开 ...

  5. android应用的数据应该保存到哪儿

    王永超王永超嫖娼 做android app开发会涉及到不同数据的保存,比如数据缓存,客户登陆信息保存,客户状态的保存等等. 那针对这不同的数据我们应该保存在什么地方呢? 1.应用卸载也不会删除的数据 ...

  6. webconfig简单加密解密

    <?xml version="1.0"?><configuration> <configSections> <section name=& ...

  7. C#利用POST实现杭电oj的AC自动机器人,AC率高达50%~~

    暑假集训虽然很快乐,偶尔也会比较枯燥,,这个时候就需要自娱自乐... 然后看hdu的排行榜发现,除了一些是虚拟测评机的账号以外,有几个都是AC自动机器人 然后发现有一位作者是用网页填表然后按钮模拟,, ...

  8. php之上传类

    <?php /** * Created by PhpStorm. * User: Administrator * Date: 2016/5/26 * Time: 20:29 */ class u ...

  9. 使用VisualSVN建立SVN Server

    首先去官网下载安装包.http://subversion.apache.org/packages.html找到windows的,选择VisualSVN->VISUALSVN SERVER 双击开 ...

  10. asp.net 查询,导出

    using System;using System.Configuration;using System.Data;using System.Linq;using System.Web;using S ...