hdu 1394 Minimum Inversion Number 【线段树求逆序数】
2024-08-31 08:16:38
之前写过树状数组的,再用线段树写一下~~~
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<cmath>
#include<vector>
using namespace std;
#define lp (p << 1)
#define rp (p << 1 | 1)
#define getmid(l,r) (l + (r - l) / 2) const int maxn = ;
struct node{
int l,r,s;
}t[*maxn]; int a[maxn],n; int calc(int a,int b) { return a+b; } void Push_up(int p){
t[p].s = calc(t[lp].s,t[rp].s);
} void Build_tree(int p,int l,int r){
t[p].l = l;
t[p].r = r;
if(l == r){ t[p].s = ;return;}
int mid = getmid(l,r);
Build_tree(lp,l,mid);
Build_tree(rp,mid+,r);
Push_up(p);
} void update(int p,int s,int w){//给s点加上w
if(t[p].l == t[p].r) {
t[p].s += w;
return;
}
int mid = getmid(t[p].l,t[p].r);
if(s <= mid) update(lp,s,w);
else update(rp,s,w);
Push_up(p);
} int sum(int p,int l,int r){
if(t[p].l == l && t[p].r == r) return t[p].s; int mid = getmid(t[p].l,t[p].r);
if(r <= mid) return sum(lp,l,r);
else if(mid < l) return sum(rp,l,r);
else return calc(sum(lp,l,mid),sum(rp,mid+,r));
} int main(){
int T;
while(scanf("%d",&n) != EOF){
for(int i = ;i <= n;i++) scanf("%d",&a[i]),a[i];
Build_tree(,,n); int ans = ;
for(int i = ;i <= n;i++){
ans += sum(,a[i]+,n);update(,a[i],);
// printf("ans = %d\n",ans);
} int res = ans;
for(int i = ;i <= n;i++){
ans += n-*a[i] - ;
res = min(res,ans);
// printf("res = %d\n",res);
}
printf("%d\n",res);
}
return ;
}
最新文章
- Linux下使用vsftp
- android学习笔记(入门篇)
- Java实现mysql数据库备份
- 【HDOJ】3832 Earth Hour
- Line Painting
- 如何利用C#编写网页投票器程序 如何使用代理来投票 代理IP来投票
- [HDU 4741]Save Labman No.004[计算几何][精度]
- ASP.NET MVC+EF框架+EasyUI实现权限管理系列(14)-主框架搭建
- 修改mysql root账号密码
- Java Tomcat 启动失败的解决思路
- 异常-----freemarker.template.TemplateException: The only legal comparisons are between two numbers, two strings, or two dates
- maven的两种打包插件 ,防止 将无用文件打入META_INF,找不到主类的问题
- 12. Application-specific scanners (特定应用程序扫描器)
- C# 中的readonly属性
- Cocos Creator学习四:按钮响应事件
- js中,for循环里面放ajax,ajax访问不到变量以及每次循环获取不到数据问题总结
- 8,EasyNetQ-多态发布和订阅
- SQL优化系列——子查询
- [转]MySQL源码:Range和Ref优化的成本评估
- Python 数据分析基础小结