【模板】逆序对(树状数组)
逆序对在编程中比较常见,最普通的O(n ^ 2)算法很短,但是太慢了,往往不满足我们的要求。一种高级的O(nlogn)的算法是使用归并排序,在归并排序执行过程中解决问题,时间是短,但是代码量太大了。现在,我们有一种算法,时间短,代码量也少,很好记,就是用树状数组来实现。
int n, c[MAXN], number[MAXN];
struct Node { int val, num; } a[MAXN];
bool cmp(Node a, Node b) { return a.val > b.val; }
int lowbit(int x) { return x & (-x); }
void add(int x)
{for (int i = x;i <= n;i += lowbit(i)) c[i]++;
}
int query(int x)
{int ans = 0;for (int i = x;i > 0;i -= lowbit(i)) ans += c[i];return ans;
}
int reverse_order_pair()
{int ans = 0, temp = -1, tot = 0;stable_sort(a + 1, a + n + 1, cmp); for (int i = 1; i <= n; i++) { if (a[i].val != temp) { tot++; temp = a[i].val; } number[a[i].num] = tot; } for (int i = 1; i <= n; i++) { add(number[i]); ans += query(number[i] - 1); } return ans;
}
revers_order_pair是求解逆序对的函数,compare是为了使用sort,add和query应该都看得懂,毕竟是树状数组经典操作。实现过程就画个图就解决了。
【模板】逆序对(树状数组)相关推荐
- 【2018.12.15】【考试总结】【模拟+逆序对+树状数组+贪心+multiset】爆零之旅
这是我悲惨的接近爆零的一次考试,但是本蒟蒻不能放弃,还是要总结的QAQ 答题卡 [题目背景] 八月是个悲惨的月份.先不谈炎热的天气,对于新生来说,八月意味着军训: 而对于高二高三的同学来说,八月意味着 ...
- P2717-寒假作业【逆序对,树状数组】
正题 题目链接:https://www.luogu.com.cn/problem/P2717 题目大意 nnn个数,求有多少个连续子序列的平均值大于等于kkk. 解题思路 因为长度会十分干扰,所以我们 ...
- P3531-[POI2012]LIT-Letters【逆序对,树状数组】
正题 题目大意:https://www.luogu.org/problem/P3531 题目大意 两个由相同字符组成的字符串,每次可以交换相邻的两个字符,求最少交换次数使这两个字符串相同. 解题思路 ...
- 【模板】一维树状数组
ACM模板 目录 聊聊前缀和 什么是树状数组? 树状数组相关操作 局限性 差分在树状数组中的应用 区间更新.单点查询 区间更新.区间查询 树状数组应用 聊聊前缀和 比如数组 int a[7]={1,2 ...
- 模板三连击:树状数组+线段树+主席树
没事儿干,复习模板...... 1.树状数组 本来不想写这个的,但是反正就几分钟就打完了,所以就写了,水AC数. 洛谷 P3374 [模板]树状数组 1 1 #include<cstdio> ...
- 【模板篇】树状数组们(三)
UPD: 本篇有了一个更通(hui)俗(se)易(nan)懂的讲解, 大家可以移步这里围观~(使用了latex推柿子, 带给你不一样的清新体验~ ok,以上两期稍稍讲了一下树状数组的基本功能.. 最最 ...
- A Simple Problem with Integers POJ - 3468(线段树+区间查询+区间修改+建树+懒惰标记模板)+(树状数组)
题意: 有一个数组,有两种操作.1: Q a b 求[a,b]的和 2:C a b c 给[a,b] 的所有元素都加上c. 题目: You have N integers, A1, A2, ... , ...
- 树状数组的相关知识 及 求逆序对的运用
文章目录 树状数组概念 前缀和和区间和 树状数组原理 区间和--单点更新 前缀和--区间查询 完整代码 离散化 sort函数 unique函数去重 erase函数仅保留不重复元素 通过树状数组求逆序对 ...
- 0x42.数据结构进阶 - 树状数组
目录 一.树状数组与逆序对 A.luogu P1908 逆序对(模板题) B.AcWing 241. 楼兰图腾 树状数组的拓展应用 1.区间加,求单点值 A.AcWing 242. 一个简单的整数问题 ...
- 【数据结构2-2】线段树与树状数组 题解
头一次老老实实写完一个官方题单,发篇题解纪念一下-- 文章目录 P3372 [模板]线段树 1 P3373 [模板]线段树 2 P4588 [TJOI2018]数学计算 P1502 窗口的星星 P24 ...
最新文章
- 100+Python编程题给你练~(附答案)
- RDC Hydrogen
- Linux实战教学笔记02:计算机系统硬件核心知识
- eclipse中常见快捷键
- Mysql全文索引解析
- 雅虎十四条:网站前端网页优化的14条原则
- 【转】通过VIOS实现AIX系统的网络虚拟化
- 【2016】【论文笔记】差频可调谐THz技术——
- java jstl 配置_jstl的tld配置
- 学习日记--overflow去掉滑条
- python惰性求值例子_惰性求值和yield-Python
- 我发现一个地方能免费领取价值198元的手环,具有能量并且有高人加持过的,只要关注微信就可以免费领取
- 苹果手机投影_智能投影机和手机无线同屏
- 用glRotatef函数转动对象
- 微型计算机的总线分为哪些,计算机总线的分类
- C语言采药动态规划,动态规划_POJ1775:采药
- Yolov5可以看到虽然有结果图片,但是并没有框出识别结果
- HTML5网页设计练习-选择器的应用
- HTML与CSS关系
- ELK--- ELK简介