P1908 逆序对

    • 2.2K通过
    • 4.4K提交
  • 题目提供者该用户不存在
  • 标签云端
  • 难度普及/提高-
  • 时空限制1s / 128MB

提交  讨论  题解

最新讨论更多讨论

  • 归并排序党注意了!数组要开…
  • dalao题解看不懂。。。。
  • 数据太水!!!!!!!!!…
  • 为什么不对?
  • 数据范围有误!!!
  • 暴力20!

题目描述

猫猫TOM和小老鼠JERRY最近又较量上了,但是毕竟都是成年人,他们已经不喜欢再玩那种你追我赶的游戏,现在他们喜欢玩统计。最近,TOM老猫查阅到一个人类称之为“逆序对”的东西,这东西是这样定义的:对于给定的一段正整数序列,逆序对就是序列中ai>aj且i<j的有序对。知道这概念后,他们就比赛谁先算出给定的一段正整数序列中逆序对的数目。

输入输出格式

输入格式:

第一行,一个数n,表示序列中有n个数。

第二行n个数,表示给定的序列。

输出格式:

给定序列中逆序对的数目。

输入输出样例

输入样例#1:

6
5 4 2 6 3 1
输出样例#1:

11

说明

对于50%的数据,n≤2500

对于100%的数据,n≤40000。

分析:树状数组的模板题,所给的正整数大小可能会比较大,所以先离散,给排序后的数分配一个序号,然后每次添加一个数,然后进行求和,所得到的是这个数前比它小的数的个数,那么可以很容易得到比它大的数的个数,累加答案即可.

#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm> using namespace std; int n,a[],re[]; struct node
{
int v, id;
}t[]; bool cmp(node a, node b)
{
return a.v < b.v;
} void add(int x, int d)
{
while (x <= n)
{
a[x] += d;
x += x & (-x);
}
} int sum(int x)
{
int cnt = ;
while (x)
{
cnt += a[x];
x -= x&(-x);
}
return cnt;
} int main()
{ scanf("%d", &n);
for (int i = ; i <= n; i++)
{
scanf("%d", &t[i].v);
t[i].id = i;
}
sort(t + , t + n + , cmp);
for (int i = ; i <= n; i++)
re[t[i].id] = i;
long long ans = ;
for (int i = ; i <= n; i++)
{
add(re[i], );
ans += i - sum(re[i]);
}
printf("%lld", ans); return ;
}

最新文章

  1. 04 KVC|KVO|Delegate|NSNotification区别
  2. [WPF]MenuItem右侧空白
  3. Spring事务配置的五种方式
  4. HttpClient session
  5. 【数据库】 Sqlserver 2008 error 40出现连接错误的解决方法
  6. sql语句,怎么查看一个表中的所有约束
  7. (转载)IO-同步、异步、阻塞、非阻塞
  8. Linux文件描述符与打开文件之间的区别(转载)
  9. vsm shadowmap format
  10. WPF 多线程处理(2)
  11. centos 中查找依赖及库
  12. SQL Server索引语法 &lt;第四篇&gt;
  13. Actor::updateMassFromShapes
  14. openfire muc 移除成员
  15. SqlBulkCopy 批量insert
  16. 写一个Python 1、通过select实现的最简单的web框架2、通过wsgiref实现的web框架
  17. Py之Crawler:利用python的爬虫功能实现从各种网站上(以百度贴吧为例)获得你喜欢的照片下载到本地电脑上——Jason niu
  18. c/c++ 拷贝控制 构造函数的问题
  19. table切换jquery插件 jQuery插件写法模板 流程
  20. maven手动安装jar包到本地仓库,以ojdbc6为例

热门文章

  1. 洛谷P1220 关路灯【区间dp】
  2. PAT (Basic Level) Practise (中文)- 1003. 我要通过!(20)
  3. 巧妙使用JQuery Clone 添加多行数据,并更新到数据库
  4. 2013.10.26工作Fighting(1)
  5. linux 查看CPU内存 网络 流量 磁盘 IO
  6. CodeForces:#448 div2 B. XK Segments
  7. Xadmin添加用户小组件出错render() got an unexpected keyword argument &#39;renderer
  8. Linux 用户行为日志记录
  9. Java并发模型框架
  10. Sicily 8843 Ranking and Friendship