洛谷 P1908 逆序对 题解
时间:2019-11-14
本文章向大家介绍洛谷 P1908 逆序对 题解,主要包括洛谷 P1908 逆序对 题解使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
每日一题 day43 打卡
Analysis
因为数据规模,所以我们需要对其进行离散化,新创一个数组a里面来放在我们的初始序列中在这个位置上的数是第几大的这里还要用一个小技巧排序,关于离散化的技巧我们具体在代码里面看
离散化之后我们只对a数组进行操作就好了,每次遇到一个数就把他插到树状数组里面去
双倍经验 洛谷 P1774 最接近神的人_NOI导刊2010提高(02)
1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<algorithm> 5 #define int long long 6 #define rep(i,s,e) for(register int i=s;i<=e;++i) 7 #define dwn(i,s,e) for(fegister int i=s;i>+e;--i) 8 #define maxn 5000000+10 9 using namespace std; 10 inline int read() 11 { 12 int x=0; 13 bool f=1; 14 char c=getchar(); 15 for(; !isdigit(c); c=getchar()) if(c=='-') f=0; 16 for(; isdigit(c); c=getchar()) x=(x<<3)+(x<<1)+c-'0'; 17 if(f) return x; 18 return 0-x; 19 } 20 inline void write(int x) 21 { 22 if(x<0){putchar('-');x=-x;} 23 if(x>9)write(x/10); 24 putchar(x%10+'0'); 25 } 26 int n,ans; 27 int a[maxn],re[maxn]; 28 int tree[maxn]; 29 inline int lowbit(int x) 30 { 31 return x&-x; 32 } 33 inline void build(int x,int k) 34 { 35 for(int i=x;i<=n;i+=lowbit(i)) tree[i]+=k; 36 } 37 inline int ask(int x) 38 { 39 int res=0; 40 for(int i=x;i>=1;i-=lowbit(i)) res+=tree[i]; 41 return res; 42 } 43 signed main() 44 { 45 n=read(); 46 rep(i,1,n) a[i]=read(),re[i]=a[i]; 47 sort(a+1,a+n+1); 48 int m=unique(a+1,a+n+1)-a-1; 49 rep(i,1,n) 50 { 51 int now=lower_bound(a+1,a+m+1,re[i])-a; 52 ans+=ask(m)-ask(now); 53 build(now,1); 54 } 55 write(ans); 56 return 0; 57 }
请各位大佬斧正(反正我不认识斧正是什么意思)
原文地址:https://www.cnblogs.com/handsome-zyc/p/11862765.html
- 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 数组属性和方法
- flink教程-聊聊 flink 1.11 中新的水印策略
- 浙大版《C语言程序设计(第3版)》题目集 习题10-4 递归求简单交错幂级数的部分和
- JSP分页显示(前端处理)
- 拓扑排序-HDU2647 Reward
- hadoop2.7.3源码解析之HA架构分析
- hadoop源码解析之hdfs内部结构分析
- 浙大版《C语言程序设计(第3版)》题目集 习题10-5 递归计算Ackermenn函数
- 浙大版《C语言程序设计(第3版)》题目集 习题10-6 递归求Fabonacci数列
- hadoop2.7.3源码解析之hdfs删除文件全流程分析h
- 二维树状数组-POJ 2155 Matrix
- 浙大版《C语言程序设计(第3版)》题目集 习题10-7 十进制转换二进制
- flink开发过程中遇到的问题集锦
- FLINK实战-使用CEP进行网站监控报警和报警恢复
- 浙大版《C语言程序设计(第3版)》题目集 习题10-8 递归实现顺序输出整数
- 浅谈DAO设计模式(示例)