Minimum Inversion Number
Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u
Description
For a given sequence of numbers a1, a2, ..., an, if we move the first m >= 0 numbers to the end of the seqence, we will obtain another sequence. There are totally n such sequences as the following:
a1, a2, ..., an-1, an (where m = 0 - the initial seqence)
a2, a3, ..., an, a1 (where m = 1)
a3, a4, ..., an, a1, a2 (where m = 2)
...
an, a1, a2, ..., an-1 (where m = n-1)
You are asked to write a program to find the minimum inversion number out of the above sequences.
Input
Output
Sample Input
1 3 6 9 0 8 5 7 4 2
Sample Output
#include <stdio.h>
#include <algorithm> using namespace std; int a[];
struct Node{
int l,r,num;
}tree[]; void Build(int n,int x,int y){
tree[n].l = x;
tree[n].r = y;
tree[n].num = ;
if(x == y){
return;
}
int mid = (x + y) / ;
Build(*n,x,mid);
Build(*n+,mid+,y);
} void Modify(int n,int x){
int l = tree[n].l;
int r = tree[n].r;
int mid = (l + r) / ;
if(x == l && x == r){
tree[n].num = ;
return;
}
if(x <= mid) Modify(*n,x);
else Modify(*n+,x);
tree[n].num = tree[*n].num + tree[*n+].num;
} int Query(int n,int x,int y){
int l = tree[n].l;
int r = tree[n].r;
int mid = (l + r) / ;
int ans = ;;
if(x == l && y == r)
return tree[n].num;
if(x <= mid) ans += Query(*n,x,min(mid,y));
if(y > mid) ans += Query(*n+,max(mid+,x),y);
return ans;
}
int main(){
//freopen ("a.txt" , "r" , stdin ) ;
int n,sum,ans;
int i,j; while(scanf("%d",&n) != EOF){
sum = ;
Build(,,n);
for(i = ;i <= n;i++){
scanf("%d",&a[i]);
Modify(,a[i]);
sum += Query(,a[i]+,n);
}
ans = sum;
for(i = ;i < n;i++){
sum = sum + (n - - a[i]) - a[i];
if(sum < ans)
ans = sum;
}
printf("%d\n",ans);
}
}
Minimum Inversion Number的更多相关文章
- HDU 1394 Minimum Inversion Number ( 树状数组求逆序数 )
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1394 Minimum Inversion Number ...
- HDU 1394 Minimum Inversion Number(最小逆序数 线段树)
Minimum Inversion Number [题目链接]Minimum Inversion Number [题目类型]最小逆序数 线段树 &题意: 求一个数列经过n次变换得到的数列其中的 ...
- HDU 1394 Minimum Inversion Number(最小逆序数/暴力 线段树 树状数组 归并排序)
题目链接: 传送门 Minimum Inversion Number Time Limit: 1000MS Memory Limit: 32768 K Description The inve ...
- ACM Minimum Inversion Number 解题报告 -线段树
C - Minimum Inversion Number Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d &a ...
- 【hdu1394】Minimum Inversion Number
Problem Description The inversion number of a given number sequence a1, a2, ..., an is the number of ...
- [hdu1394]Minimum Inversion Number(树状数组)
Minimum Inversion Number Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java ...
- HDU-1394 Minimum Inversion Number 线段树+逆序对
仍旧在练习线段树中..这道题一开始没有完全理解搞了一上午,感到了自己的shabi.. Minimum Inversion Number Time Limit: 2000/1000 MS (Java/O ...
- 逆序数2 HDOJ 1394 Minimum Inversion Number
题目传送门 /* 求逆序数的四种方法 */ /* 1. O(n^2) 暴力+递推 法:如果求出第一种情况的逆序列,其他的可以通过递推来搞出来,一开始是t[1],t[2],t[3]....t[N] 它的 ...
- HDU 1394 Minimum Inversion Number(线段树/树状数组求逆序数)
Minimum Inversion Number Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java ...
随机推荐
- HoloLens开发手记 - Unity之摄像头篇
当你穿戴好HoloLens后,你就会处在全息应用世界的中心.当你的项目开启了"Virtual Reality Support"选项并选中了"Windows Hologra ...
- vs2015发现一个字符串拼接 bug
VS2015支持 字符串拼接 如下: string user="test"; int password=123; string sql=$" user={user};pa ...
- WP8.1&Win10幸运大转盘源码分享
先AD一下我的群:Win10开发者群:53078485 最近在写一个APP,其中需要一个转盘动画的源码,找了很多但是都没有找到,无奈只好自己来写,写完效果自己还是比较满意的,分享出来,有需要的童鞋可以 ...
- HTML5 中canvas支持触摸屏的签名面板
1.前言 最近实在是太忙了,从国庆之后的辞职,在慢慢的找工作,到今天在现在的这家公司上班大半个月了,太多的心酸泪无以言表,面试过程中,见到的坑货公司是一家又一家,好几家公司自己都只是上一天班就走了,其 ...
- sql server 2008 操作数据表
SQL Server表 表的类型: ①临时表 临时表可用来处理中间数据或者用临时表 与其它连接共享进行中的工作.临时表只 能放在tempdb中. 私有临时表(#) 全局临时表(##) ②系 ...
- [BZOJ1070][SCOI2007]修车(最小费用最大流)
题目:http://www.lydsy.com:808/JudgeOnline/problem.php?id=1070 分析: 把每个工人拆成N个点.记为A[i,j]表示第i个工人修倒数第j辆车. 每 ...
- MVC上传文件示例
[HttpPost] public void SaveFile(FormCollection form) { var c = Request.Files.Count; ]; } @using (Htm ...
- poj3522 kruskal+枚举
题目的意思是求构成生成树的边的最大边和最小边的差最小.枚举即可 #include<stdio.h> #include<string.h> #include<algorit ...
- Java-Vector
package 集合类.list类; import java.util.Vector; public class Vector类 { public static void main(String[] ...
- Android Launcher分析和修改9——Launcher启动APP流程
本来想分析AppsCustomizePagedView类,不过今天突然接到一个临时任务.客户反馈说机器界面的图标很难点击启动程序,经常点击了没有反应,Boss说要优先解决这问题.没办法,只能看看是怎么 ...