题目链接

题意

给出N个区间,求大于改区间的数目

AC

  • 按照右区间降序排列,这样可以保证下一个区间的右端点小,这样树状数组就可以重复利用。树状数组存放的是以当前左区间到右区间一共有几个比自己大的区间,当计算一个区间之后,要对树状数组更新一次,就是将当前区间加上。
using namespace std;int c[N], ans[N];
struct cow{int id, l, r;
}a[N];
bool cmp(const cow &x, const cow &y) {if (x.r != y.r)return x.r > y.r;elsereturn x.l < y.l;
}
int get_sum(int x) {int res = 0;while (x > 0) {res += c[x];x -= lowbit(x);}return res;
}
void update(int x, int y, int val) {while (x <= y) {c[x] += val;x += lowbit(x);}
}
int main() {
#ifndef ONLINE_JUDGEfreopen("in.txt", "r", stdin);// freopen("out.txt", "w", stdout);
#endifios::sync_with_stdio(false);int n;while (cin >> n, n) {mem(ans, 0);mem(c, 0);for (int i = 0; i < n; ++i) {cin >> a[i].l >> a[i].r;a[i].id = i;}// 按照右区间降序排列sort(a, a + n, cmp);// 第一个区间不会被包含,更新左区间update(a[0].l + 1, a[0].r + 1, 1);for (int i = 1; i < n; ++i) {// 区间重叠if (a[i].l == a[i - 1].l && a[i].r == a[i - 1].r)ans[a[i].id] = ans[a[i - 1].id];else {ans[a[i].id] = get_sum(a[i].l + 1);}// 即使区间重叠也要更新一次update(a[i].l + 1, a[i].r + 1, 1);}cout << ans[0];for (int i = 1; i < n; ++i) {cout << " " << ans[i];}cout << endl;}return 0;
}

POJ 2483 Cows(树状数组)相关推荐

  1. POJ 2481 Cows POJ 2352 Stars(树状数组妙用)

    题目链接:POJ 2481 Cows POJ 2352 Stars 发现这两个题目都跟求逆序数有着异曲同工之妙,通过向树状数组中插入点的位置,赋值为1,或者++,然后通过求和来判断比当前 点 &quo ...

  2. POJ 2182 Lost Cows [树状数组+二分]

    Description N (2 <= N <= 8,000) cows have unique brands in the range 1..N. In a spectacular di ...

  3. POJ 2299 Ultra-QuickSort(树状数组 + 离散)

    链接:http://poj.org/problem?id=2299 题意:给出N个数组成的数列A(0 <= A[i] <= 999,999,999),求该数列逆序对的数量. 分析:题目所谓 ...

  4. POJ 1990 (树状数组入门)

    MooFest Every year, Farmer John's N (1 <= N <= 20,000) cows attend "MooFest",a socia ...

  5. POJ 2299 Ultra-QuickSort(树状数组+离散化)

    题目大意: 就是说,给你一个序列,然后让你求出这个序列有多少个逆序对,所谓逆序对就是对于这个序列中的元素有a[i]>a[j] 且i<j存在. 其实原题是这样说的,给你一个序列,让你用最少的 ...

  6. 树状数组c语言模板,【树状数组】Cows (POJ2481) PASCAL 解题报告

    [树状数组]Cows (POJ2481) Time Limit:1000MS Memory Limit:65536K Total Submit:16 Accepted:8 Description [问 ...

  7. poj 2352 Stars 线段树(先建后查/边建边查)/树状数组三种方法思路详解,带你深入了解线段树难度⭐⭐⭐★

    poj 2352 Stars 目录 poj 2352 Stars 1.树状数组 2.线段树,先建树后查找 3.线段树,边建树边查找 Description Astronomers often exam ...

  8. poj 3321 Apple Tree(dfs序+树状数组求和模型)

    题目链接:http://poj.org/problem?id=3321 解题思路: 先dfs求出序列,将子树转化到dfs序列的区间内,接下来就是简单的树状数组求和模型了.水题. #include< ...

  9. poj 2299 Ultra-QuickSort(树状数组求逆序数+离散化)

    题目链接:http://poj.org/problem?id=2299 Description In this problem, you have to analyze a particular so ...

最新文章

  1. 阿里员工的Java问题排查工具单
  2. Memcache知识点梳理
  3. 在chrome Sources 页 显示 Console(drawer) 页
  4. linux设备驱动之总线、设备、驱动
  5. gis如何加入emf图片_当GIS运用于建筑遗产保护
  6. [NOIP1999] 提高组 洛谷P1014 Cantor表
  7. Amazon S3 设置对象的生命周期Lifecycle
  8. PaperNotes(9)-Learning deep energy model: contrastive divergence vs. Amortized MLE
  9. 初识python: 字符编码转换
  10. 服务器维护 文档,ERP系统维护服务器维护管理文档.docx
  11. 比较好用的Java模拟器,515最好的java模拟器
  12. 台式计算机常用的网卡类型,台式机无线网卡如何查看型号
  13. 简易前端路由-点击菜单切换到对应的信息栏
  14. 学习笔记2:高精度地图
  15. JAVA的人民币大写(金额)转化
  16. trt 使用trtexec工具ONNX转engine
  17. 关于DFS(深度优先搜索)与DP(动态规划)的思考
  18. 有关HP笔记本电脑的售后服务问题
  19. 美国东北大学工程学院计算机,美国东北大学计算机工程学.pdf
  20. mysql:查询所有课程的成绩第2名到第3名的学生信息及该课程成绩

热门文章

  1. Jquery学习笔记:获取jquery对象的基本方法
  2. 查询优化器内核剖析第一篇
  3. 用Python实现一个简单的智能换脸软件
  4. html5 js贪吃蛇,html5+js 贪吃蛇
  5. [Python从零到壹] 八.数据库之MySQL和Sqlite基础知识及操作万字详解
  6. C# 文件操作之创建文件夹
  7. 【数据结构与算法】之深入解析“搜索旋转排序数组”的求解思路与算法示例
  8. Swift之深入解析Key Paths的功能与应用
  9. Swift之UIView设置部分圆角与获取其所在ViewController
  10. Swift之缓存文件处理