HDU 1394 Minimum Inversion Number 树状数组
来源:互联网 发布:巴蒂尔数据 编辑:程序博客网 时间:2024/05/15 21:09
这题就是找规律,因为第一种情况的值是依次插入,并寻找后面的比他小的且未被取到的点的个数和就行,求出第一种情况的值之后,之后的情况的值就是前一种情况加上比那移到后面的一点大的点的个数再减去比后面一点小的点的个数,这样依次类推找最小值就行。
#include <stdio.h>#include <string.h>const int n=5000;int c[n+10];int a[n+10];int lowbit(int k) { return (k&(-k)); }int sum(int x) //求和{ int ret = 0; while(x>0) { ret+=c[x]; x-=lowbit(x); } return ret; } void add(int x,int d) //修改节点的值{ while(x<=n) { c[x]+=d; x+=lowbit(x); } }int main(){int t;while(~scanf("%d",&t)){memset(a,0,sizeof(a));int i,j;for(i=0;i<t;i++){scanf("%d",&a[i]);a[i]=a[i]+1;}int min=0x3f3f3f3f;int pre=0;memset(c,0,sizeof(c));for(i=0;i<t;i++){pre+=a[i]-1-sum(a[i]-1);add(a[i],1);}min=pre;for(i=0;i<t-1;i++){pre+=t-a[i]-(a[i]-1);if(pre<min)min=pre;}printf("%d\n",min);}return 0;}
1 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(树状数组)
- Minimum Inversion Number - HDU 1394 树状数组
- 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树状数组
- cmdbuild安装配置
- 【那些年遇到过的面试题】 内存管理算法--Buddy伙伴算法
- poj3170 Knights of Ni BFS
- 摘自 寂地《踮脚张望的时光》
- datanode Bad connect ack with firstBadLink
- HDU 1394 Minimum Inversion Number 树状数组
- B格闪闪,给闪闪B格的你
- Android Design Support Library的简单使用
- Fat32递归遍历文件夹下的所有文件
- Android7.0 API新特性
- MyBatis SQL语句参数注解详释
- WinInet
- GitHub 上排名前 100 的 Android 开源库介绍
- unable to execute command: Segmentation fault: 11 linker command failed due to signal