http://acm.hdu.edu.cn/showproblem.php?pid=4911

一场多校的签到题,树状数组离散化求逆序数

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std ;
typedef __int64 ll ;
int n,k ; int tree[],b[] ;
struct node
{
int num,id ;
}a[] ; int lowbit(int x){return x&(-x) ;} void update(int i,int x)
{
while(i<=n)
{
tree[i]+=x ;
i+=lowbit(i) ;
}
} int sum(int i)
{
int res= ;
while(i>)
{
res+=tree[i] ;
i-=lowbit(i) ;
}
return res ;
}
int cmp(node aa,node bb)
{
return aa.num<bb.num ;
}
int main()
{
ll ans ;
while(~scanf("%d%d",&n,&k))
{
for(int i= ;i<=n ;i++)
{
scanf("%d",&a[i].num) ;
a[i].id=i ;
}
memset(tree,,sizeof(tree)) ;
memset(b,,sizeof(tree)) ;
sort(a+,a+n+,cmp) ;
b[a[].id]= ;
for(int i= ;i<=n ;i++)
{
if(a[i].num==a[i-].num)b[a[i].id]=b[a[i-].id] ;
else b[a[i].id]=i ;
}
ans= ;
for(int i= ;i<=n ;i++)
{
update(b[i],) ;
ans+=sum(n)-sum(b[i]) ;
}
printf("%I64d\n",ans-k>?ans-k:) ;
}
return ;
}

HDU 4911的更多相关文章

  1. HDU 4911 (树状数组+逆序数)

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4911 题目大意:最多可以交换K次,就最小逆序对数 解题思路: 逆序数定理,当逆序对数大于0时,若ak ...

  2. HDU 4911 http://acm.hdu.edu.cn/showproblem.php?pid=4911(线段树求逆序对)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4911 解题报告: 给出一个长度为n的序列,然后给出一个k,要你求最多做k次相邻的数字交换后,逆序数最少 ...

  3. HDU 4911 Inversion

    http://acm.hdu.edu.cn/showproblem.php?pid=4911   归并排序求逆对数. Inversion Time Limit: 2000/1000 MS (Java/ ...

  4. hdu 4911 Inversion(找到的倒数)

    主题链接:http://acm.hdu.edu.cn/showproblem.php?pid=4911 Inversion Time Limit: 2000/1000 MS (Java/Others) ...

  5. hdu 4911 求逆序对数+树状数组

    http://acm.hdu.edu.cn/showproblem.php?pid=4911 给定一个序列,有k次机会交换相邻两个位置的数,问说最后序列的逆序对数最少为多少. 实际上每交换一次能且只能 ...

  6. 2014多校第五场1001 || HDU 4911 Inversion (归并求逆序数)

    题目链接 题意 : 给你一个数列,可以随意交换两相邻元素,交换次数不超过k次,让你找出i < j 且ai > aj的(i,j)的对数最小是多少对. 思路 : 一开始想的很多,各种都想了,后 ...

  7. hdu 4911 Inversion (分治 归并排序 求逆序数)

    题目链接 题意:给n个数,求交换k次相邻的数之后的最小的逆序数对. 用分治的方法,以前在poj上做过这种题,昨天比赛的时候忘了.... 下面的归并排序还是以前的模板. #include <ios ...

  8. HDU 4911 Inversion (逆序数 归并排序)

    Inversion 题目链接: http://acm.hust.edu.cn/vjudge/contest/121349#problem/A Description bobo has a sequen ...

  9. hdu 4911 Inversion(归并排序求逆序对数)2014多校训练第5场

    Inversion                                                                             Time Limit: 20 ...

随机推荐

  1. Android画一条横线

    <View android:layout_width="match_parent" android:layout_height="1px" android ...

  2. BOM组件物料重复检查

    好吧,今天同事让做个BOM组件物料重复检查 网上有很多例子都是在保存的时候检查的,用的是BADI :BOM_UPDATE 自己也试了一下,麻烦....很麻烦...尤其是在重复检查的时候: METHOD ...

  3. HDU 1864

    最大报销额 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submi ...

  4. CPU厂商

    1·Intel公司 Intel是生产CPU的老大哥,它占有大约80%的市场份额,Intel生产的CPU就成了事实上的x86CPU技术规范和标准.最新的酷睿2成为CPU的首选. 2·AMD公司 除了In ...

  5. gawk

    gawk '$2>365&&$3>1' part-00000 | wc -l

  6. Chrome plug-in 和Extension

    "扩展"和"插件",其实都是软件组件的一种形式,Chrome 只不过是把两种类型的组件分别给与了专有名称,一个叫"扩展",另一个叫" ...

  7. Nginx介绍

    原文:http://www.aosabook.org/en/nginx.html 作者: Andrew Alexeev nginx(发音"engine x")是俄罗斯软件工程师Ig ...

  8. NSArray和NSDictionary的混合

  9. Android Phonebook编写联系人UI加载及联系人保存流程(五)

    2014-01-07 10:46:30 将百度空间里的东西移过来. 在前面的文章中我们分析了UI的加载,其中提到了一个重要的对象:RawContactDeltaList mState,我前面说过这个对 ...

  10. oracle安装后登录

    运行 sqlplus回车 longon as sysdba回车 回车 这样就可以登录了. SQL>create user username identified by password; SQL ...