题意:

给你n个区间,然后给你m个i点问你这个点在几个所给定的区间里;

思路:

离散化+区间覆盖

#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
const int N=5e4+10; struct SegT{
int left,right;
int val;
int flag;
};
SegT q[N*12];
int n,Q;
int arr[N*4]; void Build(int num,int L,int R)
{
q[num].left=L;
q[num].right=R;
q[num].flag=q[num].val=0;
if(L==R)
return;
int mid=(L+R)/2;
Build(2*num, L,mid);
Build(2*num+1,mid+1,R);
} void Pushdown(int num)
{
if(q[num].flag)
{
q[2*num].val+=(q[2*num].right-q[2*num].left+1)*q[num].flag;
q[2*num+1].val+=(q[2*num+1].right-q[2*num+1].left+1)*q[num].flag;
q[2*num].flag+=q[num].flag;
q[2*num+1].flag+=q[num].flag;
q[num].flag=0;
}
} void Update(int num,int s,int t)
{
if(q[num].left>=s&&q[num].right<=t)
{
q[num].flag+=1;
q[num].val+=(q[num].right-q[num].left+1); //wa在了这里。。只要加1就行了,无奈给乘了。。。q[num].flag...不过还是有长进///
return;
}
Pushdown(num);
int mid=(q[num].left+q[num].right)/2;
if(mid>=t)
Update(2*num,s,t);
else if(mid<s)
Update(2*num+1,s,t);
else
{
Update(2*num,s,mid);
Update(2*num+1,mid+1,t);
}
q[num].val=q[2*num].val+q[2*num+1].val;
} int query(int num,int id)
{
if(q[num].left==id&&q[num].left==q[num].right)
return q[num].val;
Pushdown(num);
int mid=(q[num].right+q[num].left)/2;
if(mid>=id)
return query(2*num,id);
else
return query(2*num+1,id);
} vector<int>xs;
int main()
{
int T,cas=1;
scanf("%d",&T);
while(T--)
{
scanf("%d%d",&n,&Q);
xs.clear();
for(int i=1;i<=2*n;i+=2)
{
scanf("%d%d",&arr[i],&arr[i+1]);
xs.push_back(arr[i]);
xs.push_back(arr[i+1]);
}
for(int i=1;i<=Q;i++)
{
scanf("%d",&arr[i+2*n]);
xs.push_back(arr[i+2*n]);
}
int num=0;
sort(xs.begin(),xs.end());
vector<int>::iterator e=unique(xs.begin(),xs.end());
for(int i=1;i<=2*n+Q;i++)
{
arr[i]=lower_bound(xs.begin(),e,arr[i])-xs.begin()+1;
num=max(num,arr[i]);
}
Build(1,1,num); for(int i=1;i<=2*n;i+=2)
Update(1,arr[i],arr[i+1]); printf("Case %d:\n",cas++);
for(int i=1;i<=Q;i++)
printf("%d\n",query(1,arr[i+2*n]));
}
return 0;
} /*
5 4
6 12
8 8
10 12
8 11
0 12
11
12
2
20 3 3
1 3
2 4
5 6
1
2
3
*/

lightoj 1089 【离散化+线段树】的更多相关文章

  1. 南阳理工 题目9:posters(离散化+线段树)

    posters 时间限制:1000 ms  |  内存限制:65535 KB 难度:6   描述 The citizens of Bytetown, AB, could not stand that ...

  2. SGU 180 Inversions(离散化 + 线段树求逆序对)

    题目链接:http://acm.sgu.ru/problem.php?contest=0&problem=180 解题报告:一个裸的求逆序对的题,离散化+线段树,也可以用离散化+树状数组.因为 ...

  3. 【POJ】2528 Mayor's posters ——离散化+线段树

    Mayor's posters Time Limit: 1000MS    Memory Limit: 65536K   Description The citizens of Bytetown, A ...

  4. hpu校赛--雪人的高度(离散化线段树)

    1721: 感恩节KK专场——雪人的高度 时间限制: 1 Sec  内存限制: 128 MB 提交: 81  解决: 35 [提交][状态][讨论版] 题目描述 大雪过后,KK决定在春秋大道的某些区间 ...

  5. 【BZOJ1645】[Usaco2007 Open]City Horizon 城市地平线 离散化+线段树

    [BZOJ1645][Usaco2007 Open]City Horizon 城市地平线 Description Farmer John has taken his cows on a trip to ...

  6. 【bzoj4636】蒟蒻的数列 离散化+线段树

    原文地址:http://www.cnblogs.com/GXZlegend/p/6801379.html 题目描述 蒟蒻DCrusher不仅喜欢玩扑克,还喜欢研究数列 题目描述 DCrusher有一个 ...

  7. 离散化+线段树/二分查找/尺取法 HDOJ 4325 Flowers

    题目传送门 题意:给出一些花开花落的时间,问某个时间花开的有几朵 分析:这题有好几种做法,正解应该是离散化坐标后用线段树成端更新和单点询问.还有排序后二分查找询问点之前总花开数和总花凋谢数,作差是当前 ...

  8. Mayor's posters (离散化线段树+对lazy的理解)

    题目 题意: n(n<=10000) 个人依次贴海报,给出每张海报所贴的范围 li,ri(1<=li<=ri<=10000000) .求出最后还能看见多少张海报. 思路: 由于 ...

  9. 干物妹小埋 (离散化 + 线段树 + DP)

    链接:https://ac.nowcoder.com/acm/contest/992/B来源:牛客网 题目描述 在之前很火的一个动漫<干物妹小埋>中,大家对小埋打游戏喝可乐的印象十分的深刻 ...

  10. poj/OpenJ_Bailian - 2528 离散化+线段树

    传送门:http://bailian.openjudge.cn/practice/2528?lang=en_US //http://poj.org/problem?id=2528 题意: 给你n长海报 ...

随机推荐

  1. asyncio协程与并发

    并发编程 Python的并发实现有三种方法. 多线程 多进程 协程(生成器) 基本概念 串行:同时只能执行单个任务 并行:同时执行多个任务 在Python中,虽然严格说来多线程与协程都是串行的,但其效 ...

  2. 在与SQL Server 建立 连接时出现与网络相关的或特定于实例的错误。未找到或无法访问服务器

  3. spring 集成 mybatis 后数据源初始化失败问题分析

    问题背景: 项目使用spring,springmvc框架,后边需操作关系数据库,选择了mybatis + durid,集成mybatis后,项目一直启动失败.错误的原因是dataSource初始化的时 ...

  4. BZOJ 2069 POI2004 ZAW 堆优化Dijkstra

    题目大意:给定一张无向图.每条边从两个方向走各有一个权值,求从点1往出走至少一步之后回到点1且不经过一条边多次的最短路 显然我们须要从点1出发走到某个和点1相邻的点上,然后沿最短路走到还有一个和点1相 ...

  5. CoreData使用

    1.如果想创建一个带有coreData的程序,要在项目初始化的时候勾选中 2.创建完成之后,会发现在AppDelegate里多出了几个属性,和2个方法 <span style="fon ...

  6. MT6737 Android N 平台 Audio系统学习----录音到播放录音流程分析

    http://blog.csdn.net/u014310046/article/details/54133688 本文将从主mic录音到播放流程来进行学习mtk audio系统架构.  在AudioF ...

  7. 关于AngularJs中监听事件及脏循环的理解

    可能很多刚入行或者刚学习的前端对于AngularJs中的一些事件或者概念感觉不理解或者没有思路,今天让我们一起来剖析一下AngularJs中的一些事件. AngularJs中对于的监听事件会用到一个s ...

  8. IOC入门1

    1.配置文件 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http:/ ...

  9. html5--3.8 input元素(7)

    html5--3.8 input元素(7) 学习要点 input元素及其属性 input元素 用来设置表单中的内容项,比如输入内容的文本框,按钮等 不仅可以布置在表单中,也可以在表单之外的元素使用 i ...

  10. easyui tree 树形节点 formatter 渲染不起作用

    接了个需求,需要对一个树形列表进行重新渲染,在进行渲染的过程中发现树形节点的formatter 属性无法生效.经反复测试,发现在外部环境中正常,但在项目环境中始终无效.最终发现问题出在 easyui ...