51Nod 1019树状数组离散化
来源:互联网 发布:什么软件做假章 编辑:程序博客网 时间:2024/06/06 07:04
开始RE,后面终于想通,数是10^9,然后离散化一下就行了;
#include<iostream>#include<cstdio>#include<cstring>#include<cmath>#include<vector>#include<algorithm>#include<map>using namespace std;const int maxn = 100000 + 10;#define INF 0x3f3f3f3f#define clr(x,y) memset(x,y,sizeof x )typedef long long ll;#define eps 10e-10const int Mod = 1000000007;typedef pair<ll, ll> P;ll tree[maxn];ll a[maxn];inline lowbit(ll x){ return x &(- x);}ll get(ll x){ ll ans = 0; for(ll i = x; i > 0; i -= lowbit(i)) ans += tree[i]; return ans;}void update(ll x,ll val){ for(ll i = x; i < maxn; i += lowbit(i)) tree[i] += val;}int b[maxn];int main(){ ll n; while( ~ scanf("%I64d",&n)) { clr(tree,0); for(ll i = 1; i <= n; i ++) scanf("%I64d",&a[i]),b[i] = a[i]; sort(b+1,b+n+1); int len = unique(b+1,b+n+1) - b; for(int i = 1; i <= n; i ++) a[i] = lower_bound(b+1,b+len + 1,a[i]) - b + 2;// for(int i = 1; i <= n; i ++)// cout << a[i] << " ";// cout << endl; ll ans = 0; for(ll i = n; i >= 1; i --) { ans += get(a[i]); update(a[i],1); } printf("%I64d\n",ans); } return 0;}
阅读全文
0 0
- 51Nod 1019树状数组离散化
- 【51Nod】1019 - 求逆序数(离散化 & 树状数组)
- 51nod 平均数(二分+离散+树状数组)
- 51nod 差和问题(树状数组+离散化 (Java))
- 51nod 逆序数[NYOJ 逆序数](离散化+树状数组)
- 51NOD 1107 斜率小于0的连线数量 坐标离散化+树状数组
- 51nod-斜率小于0的连线数量(树状数组+离散化)
- 51 NOD 1428 活动安排问题(树状数组+离散化)
- 树状数组--离散化
- Flowers&&树状数组+离散化
- hdu4417(离散化+树状数组)
- POJ2299 树状数组+离散化
- poj2299 离散化+树状数组
- hdu4325 树状数组+离散化
- hdu5372 离散化+树状数组
- poj2299 树状数组+离散化
- poj2299离散化,树状数组
- hdu5862树状数组 离散化
- JavaScript 消息框
- IntelliJ IDEA 2017 激活详解
- 使用dom4j.jar操作XML
- bootstrap validation submit
- python 读取txt出现\xef\xbb\xbf…的问题
- 51Nod 1019树状数组离散化
- 关于函数一些不得不说的事~
- Sass混合宏 VS 继承 VS 占位符的使用
- 关于eclipse安装maven之后,maven找不到JDK问题
- CSS居中元素
- Android Kotlin开发尝鲜
- vim启动和退出
- java中的匿名内部类总结
- 【前端面试】清除二维数组中元素为0所在的行和列