hdu 1394 Minimum Inversion Number(线段树)
参考:http://blog.sina.com.cn/s/blog_691ce2b70101ldmm.html
https://blog.csdn.net/wiking__acm/article/details/7920429
语法:https://zhidao.baidu.com/question/172532047.html
#include <stdio.h>
#include <algorithm> using namespace std; int a[];
struct Node{
int l,r,num;//num该区间已出现数的个数
}tree[]; void Build(int n,int x,int y){
tree[n].l = x;
tree[n].r = y;
tree[n].num = ;
if(x == y){
return;
}
int mid = (x + y) / ;
Build(*n,x,mid);
Build(*n+,mid+,y);
} void Modify(int n,int x){//在输入的相应叶节点加1
int l = tree[n].l;
int r = tree[n].r;
int mid = (l + r) / ;
if(x == l && x == r){
tree[n].num = ;
return;
}
if(x <= mid) Modify(*n,x);
else Modify(*n+,x);
tree[n].num = tree[*n].num + tree[*n+].num;
} int Query(int n,int x,int y){//求大于该数且已经出现的数个数,n节点序号,x左端点,y右端点
int l = tree[n].l;
int r = tree[n].r;
int mid = (l + r) / ;
int ans = ;
if(x == l && y == r)
return tree[n].num;
if(x <= mid) ans += Query(*n,x,min(mid,y));
if(y > mid) ans += Query(*n+,max(mid+,x),y);
return ans;
}
int main(){
int n,sum,ans;
int i,j; while(scanf("%d",&n) != EOF){
sum = ;
Build(,,n-);//区间端点取0~n-1即可
for(i = ;i <= n;i++){
scanf("%d",&a[i]);
Modify(,a[i]);
sum += Query(,a[i]+,n-);
}
ans = sum;
for(i = ;i < n;i++){
sum = sum + (n - - a[i]) - a[i];//根据递推式加上接下来依次循环的序列的逆序数
if(sum < ans)
ans = sum;//要最小的
}
printf("%d\n",ans);
}
}
hdu 1394 Minimum Inversion Number(线段树)的更多相关文章
- HDU.1394 Minimum Inversion Number (线段树 单点更新 区间求和 逆序对)
HDU.1394 Minimum Inversion Number (线段树 单点更新 区间求和 逆序对) 题意分析 给出n个数的序列,a1,a2,a3--an,ai∈[0,n-1],求环序列中逆序对 ...
- hdu - 1394 Minimum Inversion Number(线段树水题)
http://acm.hdu.edu.cn/showproblem.php?pid=1394 很基础的线段树. 先查询在更新,如果后面的数比前面的数小肯定会查询到前面已经更新过的值,这时候返回的sum ...
- [HDU] 1394 Minimum Inversion Number [线段树求逆序数]
Minimum Inversion Number Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java ...
- HDU 1394 Minimum Inversion Number(线段树 或 树状数组)
题目大意:给出从 0 到 n-1 的整数序列,A0,A1,A2...An-1.可将该序列的前m( 0 <= m < n )个数移到后面去,组成其他的序列,例如当 m=2 时,得到序列 A2 ...
- HDU 1394 Minimum Inversion Number 线段树
题目: http://acm.hdu.edu.cn/showproblem.php?pid=1394 没看到多组输入,WA了一万次...... 其实很简单,有人暴力过得,我感觉归并排序.二叉排序树求逆 ...
- HDU 1394 Minimum Inversion Number (树状数组)
题目链接 Problem Description The inversion number of a given number sequence a1, a2, ..., an is the numb ...
- hdu 1394 Minimum Inversion Number (树状数组求逆序对)
The inversion number of a given number sequence a1, a2, ..., an is the number of pairs (ai, aj) that ...
- HDU 1394 Minimum Inversion Number(树状数组/归并排序实现
Minimum Inversion Number Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java ...
- hdu 1394 Minimum Inversion Number(树状数组)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1394 题意:给你一个0 — n-1的排列,对于这个排列你可以将第一个元素放到最后一个,问你可能得到的最 ...
- hdu 13394 Minimum Inversion Number 线段树
题意: 首先给你一个长度为n的序列v,你需要首先找出来逆序对(i<j && v[i]>v[j]) 然后把这个序列的最后一个元素放在第一个位置上,其他元素都向后移动一位. 一 ...
随机推荐
- day6-基础 模块详解
1.定义: 1)模块:本质上就是一个python程序,封装成一个"模块",可以调用里面的方法,用来实现一个功能.逻辑上用来组织python代码. 2)包:本质上是一个目录(必须带有 ...
- 解决Could not get lock /var/cache/apt/archives/lock
在ubuntu apt-get upgrade的时候,遇到: E: Could not get lock /var/cache/ apt/archives/lock - open (11 Resour ...
- likelihood(似然) and likelihood function(似然函数)
知乎上关于似然的一个问题:https://www.zhihu.com/question/54082000 概率(密度)表达给定下样本随机向量的可能性,而似然表达了给定样本下参数(相对于另外的参数)为真 ...
- [转]这13个开源GIS软件,你了解几个?
这些开源GIS软件,你了解几个?本文内容部分来源于一份罗列了关于GIS软件应用的文章,笔者将其编译整合. 地理信息系统(Geographic Information System,GIS)软件依赖于覆 ...
- Git免密码提交
下面说一下https克隆的方式免密码提交 在我们下载链接前面加上账号:密码@即可 方式一: 使用https的方式克隆代码 git clone '地址' 查看项目中的配置文件 vim .git/conf ...
- 【luogu P1262 间谍网络】 题解
题目链接:https://www.luogu.org/problemnew/show/P1262 注意: 1.缩点时计算出入度是在缩完点的图上用color计算.不要在原来的点上计算. 2.枚举出入度时 ...
- Spring MVC之@RequestBody, @ResponseBody 详解(转)
简介: @RequestBody 作用: i) 该注解用于读取Request请求的body部分数据,使用系统默认配置的HttpMessageConverter进行解析,然后把相应的数据绑定到要返回的对 ...
- 初入AngularJS基础门
作为mvvm 框架过重 不适用于性能比较高的移动端的web栈, ui组建性对复杂,不利于重用 AngularJS 构建一个CRUD ( create retrieve update delete )的 ...
- data-ng-model 指令
<!DOCTYPE html><html><head><meta http-equiv="Content-Type" content=&q ...
- VMware虚拟机修改BIOS启动项
vmware默认是硬盘启动,要进bios里面设置成开机的启动顺序,要将光盘设置成第一启动项.但vm的开机画面比笔记本的还要快很多,基本都在1s内的,想进入 bios里面也有难度.. 对于网上说的开vm ...