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

 #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. WKWebView新特性及JS交互

    引言 一直听说WKWebView比UIWebView强大许多,可是一直没有使用到,今天花了点时间看写了个例子,对其API的使用有所了解,为了日后能少走弯路,也为了让大家更容易学习上手,这里写下这篇文章 ...

  2. 三种用于select 的选择器

    <html lang="en"> <head> <meta charset="utf-8"> <title>选项 ...

  3. STL MAP及字典树在关键字统计中的性能分析

    转载请注明出处:http://blog.csdn.net/mxway/article/details/21321541 在搜索引擎在通常会对关键字出现的次数进行统计,这篇文章分析下使用C++ STL中 ...

  4. linux命令总结2

    昨天继续对239进行挖掘,想把运营登录浮层的示例页面放在这台测试机上,供大家使用,结果在配置apache时出现了问题,无论怎样,页面都是403 Forbidden,最后终于被露颖同学经过2个小时的努力 ...

  5. python爬虫之Scrapy 使用代理配置

    转载自:http://www.python_tab.com/html/2014/pythonweb_0326/724.html 在爬取网站内容的时候,最常遇到的问题是:网站对IP有限制,会有防抓取功能 ...

  6. HTTP断点续传的基本原理

    转自:http://blog.csdn.net/sendy888/article/details/1719105 断点续传是我们现在经常接触的概念,那么HTTP协议是如何支持断点续传的呢.我们先从一个 ...

  7. PHP脚本memcache类的源码

    <?php /**  * @example $mem = new Memcached();  * @example $getCache = $mem->get('test');  * @e ...

  8. Spring中MultipartHttpServletRequest实现文件上传

    Spring中MultipartHttpServletRequest实现文件上传 转贴自:http://my.oschina.net/nyniuch/blog/185266 实现图片上传  用户必须能 ...

  9. 第一课 android环境搭建

    android环境搭建需要的工具: 1.JDK 2.eclipse 3.SDK 4.ADT

  10. SqlSever基础 union 将得到的横表变为纵表

    镇场诗:---大梦谁觉,水月中建博客.百千磨难,才知世事无常.---今持佛语,技术无量愿学.愿尽所学,铸一良心博客.------------------------------------------ ...