题目: http://acm.hdu.edu.cn/showproblem.php?pid=1394

没看到多组输入,WA了一万次。。。。。。

其实很简单,有人暴力过得,我感觉归并排序、二叉排序树求逆序数都可以,但是我没写。

  1. #include <stdio.h>
  2. #include <string.h>
  3.  
  4. const int MAXN = ;
  5.  
  6. struct Tree_Node
  7. {
  8. int left, right;
  9. int num;
  10. } tree[MAXN<<];
  11.  
  12. void build(int left, int right, int step)
  13. {
  14. tree[step].left = left;
  15. tree[step].right = right;
  16. tree[step].num = ;
  17. if(left == right)
  18. return;
  19. int mid = (left + right) >> ;
  20. build(left, mid, step<<);
  21. build(mid+, right, step<<|);
  22. }
  23.  
  24. void insert(int cur, int step)
  25. {
  26. if(cur >= tree[step].left && cur <= tree[step].right)
  27. tree[step].num++;
  28. if(tree[step].left == tree[step].right)
  29. return;
  30. int mid = (tree[step].left + tree[step].right) >> ;
  31. if(cur <= mid)
  32. insert(cur, step<<);
  33. else
  34. insert(cur, step<<|);
  35. }
  36.  
  37. int query(int left, int right, int step)
  38. {
  39. if(tree[step].left == left && tree[step].right == right)
  40. {
  41. return tree[step].num;
  42. }
  43. int mid = (tree[step].left + tree[step].right) >> ;
  44. if(right <= mid)
  45. {
  46. return query(left, right, step<<);
  47. }
  48. else if(left > mid)
  49. {
  50. return query(left, right, step<<|);
  51. }
  52. else
  53. {
  54. return query(left, mid, step<<) + query(mid+, right, step<<|);
  55. }
  56. }
  57.  
  58. int main()
  59. {
  60. int n, x[MAXN];
  61. while(scanf("%d", &n) != EOF)
  62. {
  63. int ans = ;
  64. build(, n, );
  65. for(int i = ; i < n; i++)
  66. {
  67. scanf("%d", &x[i]);
  68. ans += query(x[i]+, n, );
  69. insert(x[i], );
  70. }
  71. int tmp = ans;
  72. for(int i = ; i < n; i++)
  73. {
  74. tmp += n - x[i] - x[i] - ;
  75. if(tmp < ans)ans = tmp;
  76. }
  77. printf("%d\n", ans);
  78. }
  79. return ;
  80. }

HDU 1394 Minimum Inversion Number 线段树的更多相关文章

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

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

  2. hdu - 1394 Minimum Inversion Number(线段树水题)

    http://acm.hdu.edu.cn/showproblem.php?pid=1394 很基础的线段树. 先查询在更新,如果后面的数比前面的数小肯定会查询到前面已经更新过的值,这时候返回的sum ...

  3. [HDU] 1394 Minimum Inversion Number [线段树求逆序数]

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

  4. HDU 1394 Minimum Inversion Number(线段树 或 树状数组)

    题目大意:给出从 0 到 n-1 的整数序列,A0,A1,A2...An-1.可将该序列的前m( 0 <= m < n )个数移到后面去,组成其他的序列,例如当 m=2 时,得到序列 A2 ...

  5. HDU 1394 Minimum Inversion Number (树状数组)

    题目链接 Problem Description The inversion number of a given number sequence a1, a2, ..., an is the numb ...

  6. hdu 1394 Minimum Inversion Number (树状数组求逆序对)

    The inversion number of a given number sequence a1, a2, ..., an is the number of pairs (ai, aj) that ...

  7. HDU 1394 Minimum Inversion Number(树状数组/归并排序实现

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

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

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

  9. hdu 13394 Minimum Inversion Number 线段树

    题意: 首先给你一个长度为n的序列v,你需要首先找出来逆序对(i<j && v[i]>v[j]) 然后把这个序列的最后一个元素放在第一个位置上,其他元素都向后移动一位. 一 ...

随机推荐

  1. C++实现建立和一二进制树的三个递归遍历

    说明:这篇文章是学习交流,转载请注明出处,欢迎转载! 二叉树是一种常见的数据结构.二叉树的遍历也是家常便饭的事了,这里仅仅写出一个完整的能够执行的C++代码来随便建立一个例如以下图所看到的的二叉树,建 ...

  2. CSS3超酷移动手机滑动隐藏側边栏菜单特效

    这是一组共4种效果很炫酷的CSS3移动手机滑动隐藏側边栏菜单特效. 这四种效果各自是:默认的点击滑动側边栏菜单效果.带3D transforms的滑动側边栏效果.文字缩放和淡入淡出效果的滑动側边栏以及 ...

  3. Java中字符流与字节流的区别

    字符流处理的单元为2个字节的Unicode字符,分别操作字符.字符数组或字符串,而字节流处理单元为1个字节,操作字节和字节数组.所以字符流是由Java虚拟机将字节转化为2个字节的Unicode字符为单 ...

  4. autocommit=0

    mysql; Query OK, rows affected (0.00 sec) mysql> create table test( a int); Query OK, rows affect ...

  5. cocoapods使用指南

    什么是cocoapods cocoapods是库管理工具. cocoapods的用途 解决库之间的依赖关系.如前文所述: 一个开源的项目可能是另一个项目的基础, A依赖B, B依赖C和D, D又依赖E ...

  6. Android_EditText

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools=&q ...

  7. 读取properties文件

    假设项目名称为myproject public class UtilConfig { private static final Properties prop; static { prop = new ...

  8. 一个不错的flash 模板

    听到好听的背景音乐,而且效果也挺不错的,忽然感觉flash好强大呀 1.模板浏览地址:http://www.cssmoban.com/cssthemes/5229.shtml 2.模板演示地址:htt ...

  9. JavaScript入门(6)

    一.if语句 if语句是基于条件成立才执行相应代码时使用的语句 语法: if(条件) {条件成立时执行代码} 注: if小写,大写字母IF会出错! 二.if...else语句(二选一) 语法: if( ...

  10. jQuery中的html,val,text区别

    在项目开发中,写jQuery代码有时候会搞混淆一下东西,现在写一下demo来列出jQuery的.html(),.text(),.val()的区别. 1. html()取得第一个匹配元素的内容,简单来说 ...