树状数组求逆序和模板
2011-07-16 22:43
316 查看
C++ code:
#include <iostream> #include <cstdio> #include <algorithm> #include <cstring> #define lowbit(i) (i & -i); using namespace std; struct lines { long l, r, i; }line[30001]; bool cmp_1(lines, lines); bool cmp_2(lines, lines); int main() { long A, B, n, i, k, b, T[30001], m, j; while(scanf("%ld%ld", &A, &B) == 2) { scanf("%ld", &n); for(i = 1; i <= n; i++) { scanf("%ld%ld", &k, &b); line[i].l = k * A + b; line[i].r = k * B + b; T[i] = lowbit(i); } sort(line + 1, line + n + 1, cmp_1); for(i = 1; i <= n; i++) line[i].i = i; sort(line + 1, line + n + 1, cmp_2); T[0] = m = 0; for(i = 1; i <= n; i++) { j = line[i].i - 1; while(j) { m += T[j]; j -= lowbit(j); } j = line[i].i; while(j <= n) { T[j]--; j += lowbit(j); } } printf("%ld\n", n + m + 1); } return 0; } bool cmp_1(lines a, lines b) { return a.l > b.l; } bool cmp_2(lines a, lines b) { return a.r > b.r; }
相关文章推荐
- 树状数组模板3——求逆序对
- poj2299Ultra-QuickSort【树状数组求逆序数、离散化】、【归并排序模板】
- 【模板】逆序对(树状数组)
- 【模板】树状数组求逆序对
- 求逆序对模板题(完善模板:树状数组或归并排序)
- 【树状数组--求逆序数】poj2481 Cows
- 树状数组的模板(一维和二维)
- 树状数组求逆序对666
- hdu4000(一维树状数组模板)
- ACM学习历程—HDU5592 ZYB's Premutation(逆序数 && 树状数组 && 二分)(BestCoder Round #65 1003)
- Mobile phones POJ1195(二维树状数组模板题)
- 【BestCoder Round 65C】【树状数组 动态查找第k大 O(nlogn)】ZYB's Premutation 告诉你前i个数中的逆序对数让你还原全排列
- NOIP模拟题 2016.9.3 [数论] [逆序对] [树状数组] [树形dp]
- 树状数组 线段树 模板
- 树状数组模板
- poj 2299 Ultra-QuickSort 树状数组求逆序数 离散化
- 树状数组--模板
- 【模板】树状数组 01
- hdu5792 World is Exploding(多校第五场)树状数组求逆序对 离散化
- A Simple Problem with Integers(树状数组,更新区间查询区间模板)