HDU 1394 Minimum Inversion Number(树状数组+逆序数)
来源:互联网 发布:食品数据分析咨询公司 编辑:程序博客网 时间:2024/05/18 09:16
</pre></h1><p><span style="font-family:'Times New Roman'"><strong><span style="font-size:12px; font-family:Arial; color:green"> </span><span style="font-family:Arial; color:green"><span style="font-size:18px"> Minimum Inversion Number</span></span></strong></span></p><p><span style="font-family:'Times New Roman'; font-size:14px"><strong><span style="font-family:Arial; font-size:12px; color:green">Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)</span></strong></span></p><span style="font-family:'Times New Roman'; font-size:14px"><strong><span style="font-family:Arial; font-size:12px; color:green">Total Submission(s): 18380 Accepted Submission(s): 11159</span></strong></span><br style="font-family:'Times New Roman'; font-size:14px" /><br style="font-family:'Times New Roman'; font-size:14px" /><div class="panel_title" align="left" style="height:38px; padding:0px 14px; color:rgb(124,169,237); font-size:18px; font-family:Arial; font-weight:bold">Problem Description</div><div class="panel_content" style="height:auto; margin:0px; padding:0px 20px; font-size:14px; font-family:'Times New Roman'">The inversion number of a given number sequence a1, a2, ..., an is the number of pairs (ai, aj) that satisfy i < j and ai > aj.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.</div><div class="panel_bottom" style="height:auto; margin:0px; font-family:'Times New Roman'; font-size:14px"> </div><br style="font-family:'Times New Roman'; font-size:14px" /><div class="panel_title" align="left" style="height:38px; padding:0px 14px; color:rgb(124,169,237); font-size:18px; font-family:Arial; font-weight:bold">Input</div><div class="panel_content" style="height:auto; margin:0px; padding:0px 20px; font-size:14px; font-family:'Times New Roman'">The input consists of a number of test cases. Each case consists of two lines: the first line contains a positive integer n (n <= 5000); the next line contains a permutation of the n integers from 0 to n-1.</div><div class="panel_bottom" style="height:auto; margin:0px; font-family:'Times New Roman'; font-size:14px"> </div><br style="font-family:'Times New Roman'; font-size:14px" /><div class="panel_title" align="left" style="height:38px; padding:0px 14px; color:rgb(124,169,237); font-size:18px; font-family:Arial; font-weight:bold">Output</div><div class="panel_content" style="height:auto; margin:0px; padding:0px 20px; font-size:14px; font-family:'Times New Roman'">For each case, output the minimum inversion number on a single line.</div><div class="panel_bottom" style="height:auto; margin:0px; font-family:'Times New Roman'; font-size:14px"> </div><br style="font-family:'Times New Roman'; font-size:14px" /><div class="panel_title" align="left" style="height:38px; padding:0px 14px; color:rgb(124,169,237); font-size:18px; font-family:Arial; font-weight:bold">Sample Input</div><div class="panel_content" style="height:auto; margin:0px; padding:0px 20px; font-size:14px; font-family:'Times New Roman'"><pre style="word-wrap:break-word; white-space:pre-wrap; margin-top:0px; margin-bottom:0px"><div style="font-family:'Courier New',Courier,monospace">101 3 6 9 0 8 5 7 4 2</div>
Sample Output16
AuthorCHEN, Gaoli
SourceZOJ Monthly, January 2003
16
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int N = 5005;
int a[N], bit[N];
int lowbit(int k)
{
return k&-k;
}
void add(int x)
{
while(x<N)
{
bit[x]+=1;
x+=lowbit(x);
}
return ;
}
int sum(int x)
{
int ans=0;
while(x)
{
ans+=bit[x];
x-=lowbit(x);
}
return ans;
}
int main()
{
int n;
while(scanf("%d", &n)!=EOF)
{
memset(bit,0,sizeof(bit));
int tmp=0;
for(int i=1;i<=n;i++)
{
scanf("%d", &a[i]);
a[i]++;
add(a[i]);
tmp+=(i-sum(a[i]));
}
int ans=tmp;
for(int i=1;i<=n;i++)
{
tmp=tmp+(n-a[i])-(a[i]-1);
ans=min(ans,tmp);
}
printf("%d\n",ans);
}
return 0;
}
- 【树状数组(逆序数)】hdu 1394 Minimum Inversion Number
- HDU 1394 Minimum Inversion Number(树状数组+逆序数)
- hdu 1394 Minimum Inversion Number(树状数组逆序数)
- HDU 1394 Minimum Inversion Number (树状数组求逆序数)
- HDU - 1394 Minimum Inversion Number 树状数组求逆序数
- 树状数组求逆序数 HDU-1394 Minimum Inversion Number
- HDU:1394 Minimum Inversion Number(树状数组+逆序对)
- hdu 1394 Minimum Inversion Number(树状数组求逆序数)
- hdu 1394 Minimum Inversion Number 树状数组求逆序数对(原理)
- hdu 1394 Minimum Inversion Number(树状数组求逆序数)
- HDU 1394 - Minimum Inversion Number(树状数组求逆序数)
- HDU 1394 Minimum Inversion Number(线段树/树状数组求逆序数)
- [HDU]1394 Minimum Inversion Number (树状数组--单点更新,区间查询 求逆序数)
- HDU 1394 Minimum Inversion Number(线段树 || 树状数组+逆序数 )
- hdu 1394 Minimum Inversion Number(树状数组求逆序数)
- hdu 1394 Minimum Inversion Number (树状数组求逆序数)
- HDU 1394 Minimum Inversion Number【树状数组求逆序】
- Hdu 1394 Minimum Inversion Number 树状数组求逆序对
- 修改用户
- html-笔记
- java实现mySQL数据库的备份与恢复
- 一步步教你Hadoop多节点集群安装配置
- 上传本地图片兼容苹果安卓
- HDU 1394 Minimum Inversion Number(树状数组+逆序数)
- Sublime Text3注册码(可用)
- SLAM:使用G2O-ORB-SLAM(编译)
- Tab Control——属性页的子对话框中的CEdit控件无法输入的解决办法
- Android6.0 AMS启动Activity(六) AMS与PKMS关系(通过Intent获取ActivityInfo)
- JS高级程序设计笔记(一)-数据类型
- 将不规范的MAC转换为正确格式的MAC
- BP神经网络-- C语言实现 上
- Android处理图片OOM的若干方法小结