博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hdu 2689树状数组求逆序数
阅读量:4205 次
发布时间:2019-05-26

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

题目大意: 
就是问这个序列冒泡排序的话 需要交换多少次

解题思路: 
明确题意之后就非常好理解了 
对于每个数字来说交换了多少次 也就是在这个数出现之前有几个比他大的数字。累加即可。

这里维护一个树状数组,每次把a[i]的值更新为1,这样的话查询的时候1~a[i]的和就是这个数出现之前比他大的数字的个数。

#include 
using namespace std;const int N = 1000+5;#define lowbit(x) (x&-x)int cnt,sum[N],a[N];void update(int index,int val){ for(int i=index;i<=cnt;i+=lowbit(i)) sum[i]+=val; return ;}int getSum(int index){ int ans = 0; for(int i=index;i>0;i-=lowbit(i)) ans+=sum[i]; return ans;}int main(){ while(~scanf("%d",&cnt)){ memset(sum,0,sizeof(sum)); for(int i=1;i<=cnt;i++) scanf("%d",&a[i]); int ans=0; for(int i=cnt;i;i--){ ans+=getSum(a[i]); update(a[i],1); } printf("%d\n",ans); } return 0;}

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

你可能感兴趣的文章
用vbs来写sql注入等80端口的攻击脚本
查看>>
C# 检查字符串,防SQL注入攻击
查看>>
关于对SQL注入80004005 及其它错误消息分析
查看>>
即时通软件性能测试(与宴宾的对话)
查看>>
应用软件性能测试的艺术(翻译)——序
查看>>
高级性能测试(翻译)
查看>>
Web安全测试解决方案
查看>>
今天开始上班
查看>>
开源测试研究方案泡汤了
查看>>
晒一下我培训的课程——应用系统性能测试规划、实施与分析
查看>>
利用 STAF 实现程序更新包的自动部署测试
查看>>
周末参加“北京干部管理职业技术学院”关于高职课程改革的专家讨论会
查看>>
软件自动化测试框架的发展
查看>>
实现haproxy+LNMT负载均衡架构
查看>>
论文浅尝 | 通过共享表示和结构化预测进行事件和事件时序关系的联合抽取
查看>>
论文浅尝 | 融合多粒度信息和外部语言知识的中文关系抽取
查看>>
论文浅尝 | GMNN: Graph Markov Neural Networks
查看>>
廖雪峰Python教程 学习笔记3 hello.py
查看>>
从内核看epoll的实现(基于5.9.9)
查看>>
python与正则表达式
查看>>