//每个数字只会被它后面的比它小的数字影响,且会向右移动相应个数的位置
//比如:6 4 3 5 2 1 。4后面比它小的有 三个,因此它的最右边位置就是当前位置 +3,即5
//如果该数字本身在标准位置左边,那无须考虑,初始位置就是最左端
//如果它在标准位置右边,我们可以知道,它最终肯定要回到标准位置,所以最左边应该为标准位置。
#include<iostream>
#include<cstring>
using namespace std;
const int N=;
int a[N];
int ans[N];
int tr[N];
int cnt;
int lowbit(int x)
{
return x&-x;
}
void add(int x,int p)
{
for(int i=x;i<=N;i+=lowbit(i))
tr[i]+=p;
}
int sum(int x)
{
int res=;
for(int i=x;i;i-=lowbit(i))
res+=tr[i];
return res;
}
int main()
{
int t;
cin>>t;
while(t--)
{
int n;
cin>>n;
memset(a,,sizeof a);
memset(ans,,sizeof ans);
memset(tr,,sizeof tr);
//输入初始的位置
for(int i=;i<=n;i++)
cin>>a[i];
for(int i=n;i;i--)
{
//从后往前
//比这个数小的
int res=sum(a[i]);
//如果该数字本身在标准位置左边,那无须考虑,初始位置就是最左端
ans[a[i]]=res;
//插入该数字到标准位置
add(a[i],);
}
//初始位置在标准位置右边,最左端为标准位置,更新|left - right|
//a[i]应该在a[i]的位置,但是现在的位置是i,且i>=a[i],说明在标准位置的右边
//那么最左端就是标准位置,
for(int i=;i<=n;i++)
if(i>=a[i])
ans[a[i]]+=(i-a[i]);
cout<<"Case #"<<++cnt<<":";
for(int i=;i<=n;i++)
cout<<" "<<ans[i];
cout<<endl;
}
}

Bubble Sort HDU - 5775 树状数组的更多相关文章

  1. HDU 5775 树状数组

    Bubble Sort Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total ...

  2. hdu 4638 树状数组 区间内连续区间的个数(尽可能长)

    Group Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Subm ...

  3. hdu 4777 树状数组+合数分解

    Rabbit Kingdom Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) T ...

  4. HDU 2689 Sort it【树状数组】

    Sort it Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Sub ...

  5. HDU 4911 (树状数组+逆序数)

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4911 题目大意:最多可以交换K次,就最小逆序对数 解题思路: 逆序数定理,当逆序对数大于0时,若ak ...

  6. hdu 5792(树状数组,容斥) World is Exploding

    hdu 5792 要找的无非就是一个上升的仅有两个的序列和一个下降的仅有两个的序列,按照容斥的思想,肯定就是所有的上升的乘以所有的下降的,然后再减去重复的情况. 先用树状数组求出lx[i](在第 i ...

  7. 2018 CCPC网络赛 1010 hdu 6447 ( 树状数组优化dp)

    链接:http://acm.hdu.edu.cn/showproblem.php?pid=6447 思路:很容易推得dp转移公式:dp[i][j] = max(dp[i][j-1],dp[i-1][j ...

  8. HDU 2852 (树状数组+无序第K小)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2852 题目大意:操作①:往盒子里放一个数.操作②:从盒子里扔掉一个数.操作③:查询盒子里大于a的第K小 ...

  9. hdu 3450 树状数组

    思路:二分查找位置,之后是裸的树状数组. #include<set> #include<map> #include<cmath> #include<queue ...

随机推荐

  1. DOCKER 学习笔记9 Kubernetes (K8s) 弹性伸缩容器 下

    前言 从上一篇看来,我们已经对于Kubernetes ,通过minikube 建立集群,而后使用kubectl 进行交互,对Deployment 部署以及服务的暴露等.这节,将学习弹性的将服务部署到多 ...

  2. NR / 5G - The Proportional Fair algorithm

  3. Python LEGB (Local, Enclosing, Global, Build in) 规则

    Local 一个函数定义了一个 local 作用域; PyFrameObject 中的 f_local 属性 Global 一个 module 定义了一个 global 作用域; PyFrameObj ...

  4. JavaScript实现计算后缀表达式(逆波兰表达式)以及将中缀表达式转为后缀表达式

    逆波兰表达式,它的语法规定,表达式必须以逆波兰表达式的方式给出.逆波兰表达式又叫做后缀表达式.这个知识点在数据结构和编译原理这两门课程中都有介绍,下面是一些例子: 正常的表达式 逆波兰表达式 a+b ...

  5. 以stm32f407为例,学习cortex-m4通用寄存器的用法

    测试代码如下: int add(int a, int b, int c, int d, int e, int f) { return a+b+c+d+e+f; } int main(void) { i ...

  6. jmeter接口测试(登录、注册)

    Jmeter 进行接口测试流程: Jmeter 的下载地址:http://jmeter.apache.org/download_jmeter.cgi 下面举例说明使用流程,有两种参数传递的方式,我们以 ...

  7. Mysql 初始化 及 密码管理

    安装好mysql后,第一次初始化数据库 前言:启动mysql数据库最好不要使用root用户,而是使用mysql用户启动 官方解释: (永远不要使用root帐号启动MySQL Server.这样做很危险 ...

  8. VMware克隆Linux虚拟机报错

    在VMware里克隆了2个centos6.5,执行命令重启网卡服务报以下错误: Bringing up interface eth0: Device eth0 does not seem to be ...

  9. 使用requests、re、BeautifulSoup、线程池爬取携程酒店信息并保存到Excel中

    import requests import json import re import csv import threadpool import time, random from bs4 impo ...

  10. ResNet详解与分析

    目录 Resnet要解决的是什么问题 Residual Block的设计 ResNet 网络结构 error surface对比 Residual Block的分析与改进 小结 参考 博客:博客园 | ...