hdu 1394 求逆序数
来源:互联网 发布:元首最为人知的cp是谁 编辑:程序博客网 时间:2024/06/07 05:48
原题链接:点击打开链接
题意:这个单词 “inversion number”是逆序数的意思,给出一个序列,将第一个数不断放置于最后一位 ,求在这些序列中 逆序数最小的是多少。
思路 :求逆序数,
code:
#include <iostream>#include <algorithm>#include<stdio.h>#include<string.h>using namespace std;const int MAX=5e4+10;int out[MAX],ps,a[MAX];struct point{ int i; double l,r;} p[MAX];int lowbit(int x){return x&(-x);}void modify(int pos,int num){ while(pos<=MAX) { out[pos]+=num; pos+=lowbit(pos); }}int sum(int pos){ int su=0; while(pos>0) { su+=out[pos]; pos-=lowbit(pos); } return su;}int main(){ // freopen("i.txt","r",stdin); int n,i,j; while(scanf("%d",&n)!=EOF) { memset(out,0,sizeof(out)); int ans=0; for( i=1; i<=n; i++) { scanf("%d",&a[i]); a[i]++;//树状数组不能到0; modify(a[i],1); ans+=(i-sum(a[i]));前i个中数中 ,小于等于a[i]的数的个数 } int tem=ans; int m=n+1; for(i=1;i<=n;i++) { for(j=i+1;j<m;j++) { if(a[i]>a[j])//跑一遍就知道为什么了 tem--; if(a[i]<a[j]) tem++; } ans=min(ans,tem); a[m++]=a[i]; } printf("%d\n",ans); } return 0;}
0 0
- HDU 1394 求逆序数
- hdu-1394 求逆序数
- hdu 1394 求逆序数
- hdu 1394(线段树求逆序数)
- hdu 1394 树状数组求逆序数
- hdu 1394 线段树 求逆序数
- hdu 1394 线段树求逆序数
- hdu 1394 线段树求逆序数
- HDU 1394 线段树求逆序数
- hdu 1394(BIT求逆序数)
- hdu 1394(树状数组求逆序数)
- HDU 1394 线段树求逆序数
- hdu 1394(求逆序数)
- hdu 4911求逆序数
- hdu 1394 求逆序数(线段树求)
- 【树状数组or归并排序求逆序数】HDU 1394
- HDU 1394 Minimum Inversion Number 线段树求逆序数
- hdu 1394 用线段树求逆序数
- 中文版iTween帮助文档、参数解析
- [Leetcode]-Best Time to Buy and Sell Stock
- 浅谈Java中的System.gc()的工作原理
- JAVA之堆内存和栈内存的区别
- Xcode中Command Line Tools安装方法
- hdu 1394 求逆序数
- 实用中时间戳与日期互转
- uva 699 The Falling Leaves
- 看书要看好书
- HDOJ 2087 剪花布条----strstr函数
- java之反射
- HDU-1106 排序
- HDOJ 1862 EXCEL排序
- 解决安卓开发文档docs打开过慢的问题