之前写过树状数组的,再用线段树写一下~~~

 #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 ;
}

最新文章

  1. Linux下使用vsftp
  2. android学习笔记(入门篇)
  3. Java实现mysql数据库备份
  4. 【HDOJ】3832 Earth Hour
  5. Line Painting
  6. 如何利用C#编写网页投票器程序 如何使用代理来投票 代理IP来投票
  7. [HDU 4741]Save Labman No.004[计算几何][精度]
  8. ASP.NET MVC+EF框架+EasyUI实现权限管理系列(14)-主框架搭建
  9. 修改mysql root账号密码
  10. Java Tomcat 启动失败的解决思路
  11. 异常-----freemarker.template.TemplateException: The only legal comparisons are between two numbers, two strings, or two dates
  12. maven的两种打包插件 ,防止 将无用文件打入META_INF,找不到主类的问题
  13. 12. Application-specific scanners (特定应用程序扫描器)
  14. C# 中的readonly属性
  15. Cocos Creator学习四:按钮响应事件
  16. js中,for循环里面放ajax,ajax访问不到变量以及每次循环获取不到数据问题总结
  17. 8,EasyNetQ-多态发布和订阅
  18. SQL优化系列——子查询
  19. [转]MySQL源码:Range和Ref优化的成本评估
  20. Python 数据分析基础小结

热门文章

  1. (转)RabbitMQ学习之spring整合发送同步消息
  2. Kafka学习笔记(2)----Kafka的架构
  3. JS 用+1、-1填12()34()56()78()9=59
  4. vue的计算属性get和set
  5. 关于linux系统的sendmail使用中的问题与解决
  6. nyoj48-小明的调查作业
  7. [NoiPlus2016]天天爱跑步
  8. django-5-自定义模板过滤器及标签
  9. mybatis入门截图四(订单商品数据模型 一对一,一对多,多对多)
  10. PatentTips - Uncore thermal management