博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hdu 1394
阅读量:6826 次
发布时间:2019-06-26

本文共 1016 字,大约阅读时间需要 3 分钟。

题目链接:

思路:求最小的逆序数。。。可以暴力,也可以用线段树来做。。。下面是用线段树实现的代码:

View Code
1 #include
2 const int MAXN=5007; 3 using namespace std; 4 int sum[MAXN<<2]; 5 int x[MAXN]; 6 7 //更新父结点信息 8 void Push_Up(int rt){ 9 sum[rt]=sum[rt<<1]+sum[rt<<1|1];10 }11 12 void Build(int l,int r,int rt){13 sum[rt]=0;14 if(l==r)return ;15 int m=(l+r)/2;16 Build(l,m,rt<<1);17 Build(m+1,r,rt<<1|1);18 }19 20 //单点更新21 void Updata(int p,int l,int r,int rt){22 if(l==r){23 sum[rt]++;24 return ;25 }26 int m=(l+r)>>1;27 if(p<=m)Updata(p,l,m,rt<<1);28 else Updata(p,m+1,r,rt<<1|1);29 Push_Up(rt);30 }31 32 int query(int L,int R,int l,int r,int rt){33 if(L<=l&&r<=R){34 return sum[rt];35 }36 int m=(r+l)>>1;37 int ret=0;38 if(L<=m)ret+=query(L,R,l,m,rt<<1);39 if(R>m)ret+=query(L,R,m+1,r,rt<<1|1);40 return ret;41 }42 43 44 int main(){45 int n;46 while(~scanf("%d",&n)){47 Build(0,n-1,1);48 int s=0;49 for(int i=0;i

 

转载地址:http://jyykl.baihongyu.com/

你可能感兴趣的文章
Android tess_two Android图片文字识别
查看>>
高负载微服务系统的诞生过程
查看>>
maven生命周期理解
查看>>
JS基础之传参(值传递、对象传递)
查看>>
(转)几种经典的hash算法
查看>>
Content Security Policy (CSP) 介绍
查看>>
DevExpress去除多国语言包
查看>>
numpy初始化
查看>>
移植gdb到海思3716板子的方法【转】
查看>>
为什么一些机器学习模型需要对数据进行归一化?
查看>>
MySQL主从1205报错【转】
查看>>
工厂方法模式与IoC/DI
查看>>
Linux编程(获取系统时间)
查看>>
速记 - 实现sql server clr trigger
查看>>
PowerShell 开发
查看>>
C#3.0实现变异赋值(Mutantic Assignment)
查看>>
MySql的一些基本使用及操作命令 (待更新)
查看>>
题目4:棋盘寻宝扩展
查看>>
对一些面试题的回答
查看>>
c# enum用法
查看>>