codevs 4163 hzwer与逆序对
时间:2022-05-08
本文章向大家介绍codevs 4163 hzwer与逆序对,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
时间限制: 1 s
空间限制: 256000 KB
题目等级 : 黄金 Gold
题目描述 Description
hzwer在研究逆序对。
对于数列{a},如果有序数对(I,j)满足:i<j,a[i]>a[j],则(i,j)是一对逆序对。
给定一个数列{a},求逆序对个数。
输入数据较大,请使用scanf代替cin读入。
*为防卡评测,时限调低至1s
输入描述 Input Description
第一行一个数n,表示{a}有n个元素。
接下来n个数,描述{a}。
输出描述 Output Description
一个数,表示逆序对个数。
样例输入 Sample Input
5
3 1 5 2 4
样例输出 Sample Output
4
数据范围及提示 Data Size & Hint
对于10%数据,1<=n<=100.
对于20%数据,1<=n<=10000.
对于30%数据,1<=n<=100000.
对于100%数据,1<=n<=1000000,1<=a[i]<=10^8.
tips:我没有想故意卡你们时限。一点这样的意思都没有。你们不要听风就是雨……
比赛已结束 详细解析见题解
分类标签 Tags 点此展开
连树状数组求逆序对我都不会写了,,好弱啊
关于怎么实现,推荐一篇博客
http://www.cnblogs.com/xiongmao-cpp/p/5043340.html
1 #include<iostream>
2 #include<cstdio>
3 #include<cstring>
4 #include<cmath>
5 #include<algorithm>
6 #define LL long long
7 #define lb(x) ((x)&(-x))
8 using namespace std;
9 const int MAXN=40000001;
10 inline int read()
11 {
12 char c=getchar();int x=0,f=1;
13 while(c<'0'||c>'9') {if(c=='-') f=-1;c=getchar();}
14 while(c>='0'&&c<='9') x=x*10+c-48,c=getchar();return x*f;
15 }
16 int n;
17 int tree[MAXN];
18 int a[MAXN];
19 int data[MAXN];
20 inline void Point_Add(int pos,int val)
21 {
22 while(pos<=n)
23 {
24 tree[pos]+=val;
25 pos+=lb(pos);
26 }
27 }
28 inline int Interval_Sum(int pos)
29 {
30 int ans=0;
31 while(pos)
32 {
33 ans+=tree[pos];
34 pos-=lb(pos);
35 }
36 return ans;
37 }
38 int main()
39 {
40 n=read();LL ans=0;
41 for(int i=1;i<=n;i++) a[i]=read(),data[i]=a[i];
42 int num=unique(data,data+n+1)-data-1;
43 sort(data+1,data+n+1);
44 for(int i=1;i<=n;i++) a[i]=lower_bound(data+1,data+num+1,a[i])-data;
45 for(int i=1;i<=n;i++)
46 {
47 Point_Add(a[i],1);
48 ans+=i-Interval_Sum(a[i]);
49 }
50 printf("%lld",ans);
51 return 0;
52 }
- 再学习之Spring(面向切面编程).
- Hybris CronJob
- tomcat源码编译和环境搭建(r5笔记第83天)
- NumPy 将停止支持 Python 2,这里有一份给数据科学家的 Python 3 使用指导
- Apache solr(一).
- dataguard中MRP无法启动的问题分析和解决(r5笔记第82天)
- Apache solr(二).
- Git 使用技巧
- 4.训练模型之准备训练数据
- 关于dg broker的简单配置(r5笔记第99天)
- 三天速成 TensorFlow课件分享
- 干货 | 机器学习算法线上部署方法
- 用于快速开发 3D 数据处理软件的开源数据处理库 —— Open3D | Github 项目推荐
- 【java网络】IO编程
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- python-剑指offer21-40
- Java8实战--引入流
- ThingJS数据对接方法介绍——Ajax
- python-剑指offer41-62
- 【python-opencv】读取、显示、写入图像
- WSL——windows上的linux子系统
- 【python-opencv】读取、显示、保存视频
- 超级账本——Hyperledger Fabric
- 【python-opencv】绘图(目标检测框及其置信度等)
- 哈希表:哈希值太大了,还是得用set
- 哈希表:今天你快乐了么?
- 简单二分法查找(binary search)
- 【python-opencv】鼠标作为画笔
- npm 依赖管理中被忽略的那些细节
- 哈希表:map等候多时了