题目链接

参考博客

题意:

  给n个线段,对于每个线段问它覆盖了多少个线段。

思路:

  由于线段端点是在2e9范围内,所以要先离散化到2e5内(左右端点都离散化了,而且实际上离散化的范围是4e5),然后对右端点升序排序:

  例如 2 3

     5 6

     4 7

     1 8

  这样的话,如果对i<j,a[ i ].l >= a[ j ].l ,那么第 j 组一定包含了第 i 组,算完第一组sum(3)-sum(2-1),把a[1].l加入到树状数组中,再算第二组,以此类推算到第三组时,sum(7)=2(1~7的和是2,因为前面加了两个数  2和5),sum(4-3)=sum(3)=1(因为前面加入的数中只有一个2 是在范围1~3的) ,所以第三组的答案是2-1=1 。

#include<iostream>
#include<cstdio>
#include <cctype>
#include<algorithm>
#include<cstring>
#include<cmath>
#include<string>
#include<cmath>
#include<set>
#include<vector>
#include<stack>
#include<queue>
#include<map>
using namespace std;
#define ll long long
#define mem(a,x) memset(a,x,sizeof(a))
#define se second
#define fi first
const ll mod=;
const int INF= 0x3f3f3f3f;
const int N=4e5+; int n,cnt=;
int c[N],ans[N],b[N*];
struct node
{
int l,r,id;
}a[N]; bool cmp1(node x,node y)
{
return x.r<y.r || x.r==y.r&&x.l<y.l;
} int lowbit(int x){
return x&-x;
} void add(int x,int k)
{
for(int i=x;i<=n*;i+=lowbit(i)) c[i]+=k;
}
int sum(int x)
{
int sum=;
for(int i=x;i>;i-=lowbit(i)) sum+=c[i];
return sum;
}
int main()
{
cin>>n;
for(int i=;i<=n;i++)
{
scanf("%d%d",&a[i].l,&a[i].r);
a[i].id=i;
b[++cnt]=a[i].l;
b[++cnt]=a[i].r;
}
sort(b+,b++cnt);
for(int i=;i<=n;i++)
{
a[i].l=lower_bound(b+,b++cnt,a[i].l)-b;
a[i].r=lower_bound(b+,b++cnt,a[i].r)-b;
}
sort(a+,a++n,cmp1); for(int i=;i<=n;i++)
{
ans[a[i].id]=sum(a[i].r)-sum(a[i].l -);
add(a[i].l, );
}
for(int i=;i<=n;i++)
cout<<ans[i]<<endl;
}

D. Nested Segments(树状数组、离散化)的更多相关文章

  1. Educational Codeforces Round 10 D. Nested Segments (树状数组)

    题目链接:http://codeforces.com/problemset/problem/652/D 给你n个不同的区间,L或者R不会出现相同的数字,问你每一个区间包含多少个区间. 我是先把每个区间 ...

  2. hdu4605 树状数组+离散化+dfs

    Magic Ball Game Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) ...

  3. BZOJ_5055_膜法师_树状数组+离散化

    BZOJ_5055_膜法师_树状数组+离散化 Description 在经历过1e9次大型战争后的宇宙中现在还剩下n个完美维度, 现在来自多元宇宙的膜法师,想偷取其中的三个维度为伟大的长者续秒, 显然 ...

  4. POJ 2299 【树状数组 离散化】

    题目链接:POJ 2299 Ultra-QuickSort Description In this problem, you have to analyze a particular sorting ...

  5. Educational Codeforces Round 10 D. Nested Segments 离线树状数组 离散化

    D. Nested Segments 题目连接: http://www.codeforces.com/contest/652/problem/D Description You are given n ...

  6. CodeForces-652D:Nested Segments(树状数组+离散化)

    You are given n segments on a line. There are no ends of some segments that coincide. For each segme ...

  7. BZOJ-1227 虔诚的墓主人 树状数组+离散化+组合数学

    1227: [SDOI2009]虔诚的墓主人 Time Limit: 5 Sec Memory Limit: 259 MB Submit: 914 Solved: 431 [Submit][Statu ...

  8. POJ 2299 树状数组+离散化求逆序对

    给出一个序列 相邻的两个数可以进行交换 问最少交换多少次可以让他变成递增序列 每个数都是独一无二的 其实就是问冒泡往后 最多多少次 但是按普通冒泡记录次数一定会超时 冒泡记录次数的本质是每个数的逆序数 ...

  9. [HDOJ4325]Flowers(树状数组 离散化)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4325 关于离散化的简介:http://blog.csdn.net/gokou_ruri/article ...

  10. Bzoj 1901: Zju2112 Dynamic Rankings 主席树,可持久,树状数组,离散化

    1901: Zju2112 Dynamic Rankings Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 6321  Solved: 2628[Su ...

随机推荐

  1. [转]How to Install Oracle Java 11 in Ubuntu 18.04/18.10

    链接地址:http://ubuntuhandbook.org/index.php/2018/11/how-to-install-oracle-java-11-in-ubuntu-18-04-18-10 ...

  2. IntelliJ Idea 常用10款插件(提高开发效率)

    出自:https://blog.csdn.net/weixin_41846320/article/details/82697818 插件安装方式: 1.Background Image Plus 这款 ...

  3. CTS/APIO2019 游记

    已经记不得是第几天了就按顺序编号好了. 一 久违的到了北京,上次来北京还是在去年CTSC和APIO的时候.回想起来,这一年发生了很多事情啊. 下午是THUPC的试机赛,我和假雪菜.嘿嘿嘿两个神仙队友过 ...

  4. 17 SpringMVC response响应

    1.Model.ModelMap和ModelAndView的使用详解 Spring-MVC在请求处理方法可出现和返回的参数类型中,最重要就是Model和ModelAndView了,对于MVC框架,控制 ...

  5. Linux 下面 oracle 数据库连接工具的安装还有特殊字符密码登录的设置

    1. 下载Oracle的连接客户端 https://www.oracle.com/database/technologies/instant-client/downloads.html 2. 我这里仅 ...

  6. LeetCode 5215. 黄金矿工(Java)DFS

    题目: 5215. 黄金矿工 你要开发一座金矿,地质勘测学家已经探明了这座金矿中的资源分布,并用大小为 m * n 的网格 grid 进行了标注.每个单元格中的整数就表示这一单元格中的黄金数量:如果该 ...

  7. Python知识点总结篇(三)

    文件操作 对文件操作流程 打开文件,得到文件句柄并赋值给一个变量: 通过句柄对文件进行操作: 关闭文件: with:自动关闭文件: with open('log', 'r') as f: ... 文件 ...

  8. Docker登录容器命令

    1. docker exec -i -t 13496e7d5830(容器名) /bin/sh 2.退出容器命令 exit

  9. python代码执行SQL文件(逐句执行)

    一.简介 关于Python如何连接数据库并执行SQL语句,几乎所有的Python教程都会讲,教程里基本只介绍了执行单条SQL语句的方法,但是实际生产过程中可不只是执行一两条语句,动辄几十条甚至上百条的 ...

  10. Locust性能测试_先登录场景案例

    前言 有很多网站不登录的话,是无法访问到里面的页面的,这就需要先登录了实现场景:先登录(只登录一次),然后访问页面->我的地盘页->产品页->项目页 官方案例 下面是一个简单的loc ...