hdu 1394 线段树求逆序数
来源:互联网 发布:2017年网络宣传周主题 编辑:程序博客网 时间:2024/06/06 18:20
http://acm.hdu.edu.cn/showproblem.php?pid=1394
#include <cstdio>using namespace std;const int maxx=5100;int sum[maxx<<2];#define lson l,m,rt<<1#define rson m+1,r,rt<<1|1void pushup(int rt){ sum[rt]=sum[rt<<1]+sum[rt<<1|1];}void build(int l, int r, int rt){ sum[rt]=0; if(l==r) return; int m = (l+r)>>1; build(lson); build(rson);}void update(int p, int l,int r, int rt){ if(l==r) { sum[rt]++; return; } int m = (l+r)>>1; if(p<=m) update(p,lson); else update(p,rson); pushup(rt);}int query(int L, int R, int l, int r, int rt){ if(L<=l&&r<=R) return sum[rt]; int m = (l+r)>>1; int res=0; if(L<=m) res+=query(L,R,lson); if(R>m) res+=query(L,R,rson); return res;}int a[maxx];int main(){ int n; while(~scanf("%d",&n)) { build(0,n-1,1); int sum=0; for(int i = 0; i<n; i++) { scanf("%d",&a[i]); sum+=query(a[i],n-1,0,n-1,1); update(a[i],0,n-1,1); } int res=sum; for(int i = 0; i<n; i++) { sum+=n-a[i]-a[i]-1; res=res<sum?res:sum; } printf("%d\n",res); }}
0 0
- hdu 1394(线段树求逆序数)
- hdu 1394 线段树 求逆序数
- hdu 1394 线段树求逆序数
- hdu 1394 线段树求逆序数
- HDU 1394 线段树求逆序数
- HDU 1394 线段树求逆序数
- hdu 1394 求逆序数(线段树求)
- HDU 1394 Minimum Inversion Number 线段树求逆序数
- hdu 1394 用线段树求逆序数
- HDU 1394 线段树单点更新求逆序数
- hdu 1394 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 线段树求逆序数
- Java NIO 06=====Selector
- 查看当前系统shell
- 20个Linux防火墙应用技巧
- js实现网页新消息标题闪烁提醒
- Linux 的多线程编程的高效开发经验
- hdu 1394 线段树求逆序数
- C# 并行编程 之 PLINQ 规约操作和聚合函数
- 【边玩边学Unity3d】Mesh属性
- NOI 2007 题解
- 【边玩边学Unity3d】实现可编辑网格
- Android下利用Fragment+RadioGroup和TabHost实现底部选项卡的效果
- i春秋:高风险之应用错误配置和默认配置
- python自动生成iOS各尺寸规格icon
- 自定义控件六:高仿安卓市场桌面悬浮菜单