博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
POJ 2299 Ultra-QuickSort 求逆序数 线段树或树状数组 离散化
阅读量:7028 次
发布时间:2019-06-28

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

我用的线段树写的。

num数组表示已插入的数值的个数。

由于a[i]数值很大,但是n不是很大,所以要离散化处理

9 1 0 5 4

离散化后

4 1 0 3 2

这样保证最大值不会超过n

#include 
#include
#include
#include
#include
#define lson l, m, rt<<1#define rson m+1, r, rt<<1|1using namespace std;typedef long long ll;const int MAXN = 543210;int a[MAXN], mp[MAXN], num[MAXN<<2];void push_up(int rt){ num[rt] = num[rt<<1] + num[rt<<1|1];}void update(int p, int l, int r, int rt){ if(l == r) { num[rt]++; return; } int m = (l + r) >> 1; if(p <= m) update(p, lson); else update(p, rson); push_up(rt);}int query(int L, int R, int l, int r, int rt){ if(L <= l && r <= R) return num[rt]; int m = (l + r) >> 1; int ret = 0; if(L <= m) ret += query(L, R, lson); if(R > m) ret += query(L, R, rson); return ret;}bool cmp(int A, int B){ return a[A] < a[B];}int main(){// freopen("in.txt", "r" ,stdin); int n; while(~scanf("%d", &n) && n) { for(int i=0; i

 

转载于:https://www.cnblogs.com/pach/p/7419363.html

你可能感兴趣的文章
Oracle 创建 DBLink 的方法
查看>>
后Hadoop时代的大数据架构(转)
查看>>
vs2012连接sql2008(错误类型:Could not load file or assembly)
查看>>
三种初始化
查看>>
Myeclipse2014 激活 (包括方法和工具)
查看>>
兼容的网页宽度margin padding
查看>>
Git中的文件状态和使用问题解决
查看>>
架空线路导地线力学计算
查看>>
[转]服务器自动化操作 RunDeck
查看>>
服务没有mysql
查看>>
如何实例化i2c_client(四法)
查看>>
【Vegas原创】EXCEL光标所在的行自动变色
查看>>
Angularjs在线api文档
查看>>
IPAddress
查看>>
一个PHP操作大变量的例子
查看>>
SQL Server中,Numric,Decimal,Money三种字段类型的区别
查看>>
Debugging Chromium on Windows
查看>>
分享几个.NET WinForm开源组件,纪念逐渐远去的WinForm。。。
查看>>
使用EntitysCodeGenerate
查看>>
Magicodes.WeiChat——ASP.NET Scaffolding生成增删改查、分页、搜索、删除确认、批量操作、批量删除等业务代码...
查看>>