#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
#define maxn 100010
#define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1
int sum[maxn<<],mark[maxn<<];
int B[maxn*],x[maxn],y[maxn],que[maxn];
int find(int v,int k)
{
int l,m,r;
l=;
r=k;
while(l<=r)
{
m=(l+r)/;
if(B[m]==v)
return m;
else if(B[m]>v)
r=m-;
else l=m+;
}
return -;
}
void pushup(int rt)
{
sum[rt]=sum[rt<<]+sum[rt<<|];
}
void pushdown(int rt)
{
if(mark[rt])
{
mark[rt<<]+=mark[rt];
mark[rt<<|]+=mark[rt];
sum[rt<<]+=mark[rt];
sum[rt<<|]+=mark[rt];
mark[rt]=;
}
}
void build(int l,int r,int rt)
{
mark[rt]=sum[rt]=;
if(l==r)
{
return ;
}
int m=(l+r)/;
build(lson);
build(rson);
}
void updata(int L,int R,int c,int l,int r,int rt)
{
if(l>=L&&R>=r)
{
sum[rt]+=c;
mark[rt]+=c;
return ;
}
pushdown(rt);
int m=(l+r)/;
if(m>=L)
updata(L,R,c,lson);
if(R>m)
updata(L,R,c,rson);
pushup(rt);
}
int query(int p,int l,int r,int rt)
{
if(l==r)
{
return sum[rt];
}
pushdown(rt);
int m=(l+r)/;
if(m>=p)
return query(p,lson);
else return query(p,rson);
}
int main()
{
int t,i,n,m,ff=;
scanf("%d",&t);
while(t--)
{
int num=;
scanf("%d%d",&n,&m);
for(i=;i<n;i++)
{
scanf("%d%d",&x[i],&y[i]);
B[num++]=x[i];
B[num++]=y[i];
}
for(i=;i<m;i++)
{
scanf("%d",&que[i]);
B[num++]=que[i];
}
sort(B+,B+num);
int k=;
for(i=;i<num;i++)
{
if(B[i]!=B[i-])
{
B[k++]=B[i];
}
}
for(i=k-;i>;i--)
{
if(B[i]!=B[i-]+)
B[k++]=B[i-]+;
}
sort(B+,B+k);
build(,k-,);
for(i=;i<n;i++)
{
int fx=find(x[i],k-);
int fy=find(y[i],k-);
// printf("%d %d\n",fx,fy);
updata(fx,fy,,,k-,);
}
printf("Case #%d:\n",++ff);
for(i=;i<m;i++)
{
int fp=find(que[i],k-);
printf("%d\n",query(fp,,k-,));
}
}
}

hdu4325 线段树 成段更新的更多相关文章

  1. ACM: Copying Data 线段树-成段更新-解题报告

    Copying Data Time Limit:2000MS Memory Limit:262144KB 64bit IO Format:%I64d & %I64u Description W ...

  2. Codeforces Round #149 (Div. 2) E. XOR on Segment (线段树成段更新+二进制)

    题目链接:http://codeforces.com/problemset/problem/242/E 给你n个数,m个操作,操作1是查询l到r之间的和,操作2是将l到r之间的每个数xor与x. 这题 ...

  3. POJ 2777 Count Color (线段树成段更新+二进制思维)

    题目链接:http://poj.org/problem?id=2777 题意是有L个单位长的画板,T种颜色,O个操作.画板初始化为颜色1.操作C讲l到r单位之间的颜色变为c,操作P查询l到r单位之间的 ...

  4. hdu 4747【线段树-成段更新】.cpp

    题意: 给出一个有n个数的数列,并定义mex(l, r)表示数列中第l个元素到第r个元素中第一个没有出现的最小非负整数. 求出这个数列中所有mex的值. 思路: 可以看出对于一个数列,mex(r, r ...

  5. HDU1698_Just a Hook(线段树/成段更新)

    解题报告 题意: 原本区间1到n都是1,区间成段改变成一个值,求最后区间1到n的和. 思路: 线段树成段更新,区间去和. #include <iostream> #include < ...

  6. HDU 3577 Fast Arrangement ( 线段树 成段更新 区间最值 区间最大覆盖次数 )

    线段树成段更新+区间最值. 注意某人的乘车区间是[a, b-1],因为他在b站就下车了. #include <cstdio> #include <cstring> #inclu ...

  7. poj 3468 A Simple Problem with Integers 【线段树-成段更新】

    题目:id=3468" target="_blank">poj 3468 A Simple Problem with Integers 题意:给出n个数.两种操作 ...

  8. POJ3468_A Simple Problem with Integers(线段树/成段更新)

    解题报告 题意: 略 思路: 线段树成段更新,区间求和. #include <iostream> #include <cstring> #include <cstdio& ...

  9. poj 3648 线段树成段更新

    线段树成段更新需要用到延迟标记(或者说懒惰标记),简单来说就是每次更新的时候不要更新到底,用延迟标记使得更新延迟到下次需要更新or询问到的时候.延迟标记的意思是:这个区间的左右儿子都需要被更新,但是当 ...

随机推荐

  1. Django之数据库连接与建模

    Django数据库链接(这里以Mysql为例) 需要准备 Django1.10 pip install django==1.10 -i https://pypi.tuna.tsinghua.edu.c ...

  2. Leetcode441Arranging Coins排列硬币

    你总共有 n 枚硬币,你需要将它们摆成一个阶梯形状,第 k 行就必须正好有 k 枚硬币. 给定一个数字 n,找出可形成完整阶梯行的总行数. n 是一个非负整数,并且在32位有符号整型的范围内. 示例 ...

  3. 前端小知识--区分get和post请求

    get和post是HTTP协议中的两种发送请求的方法. 如果你还不了解http,可以点击[HTTP协议①介绍](https://www.jianshu.com/p/632b890b75ac)[HTTP ...

  4. stackless 安装

    1.下载源码 https://bitbucket.org/stackless-dev/stackless/wiki/Download 2.编译.安装.路径生效 apt-get install libr ...

  5. Excel函数学习:HLOOKUP函数

    Excel函数学习:HLOOKUP函数 HLOOKUP函数查找表的第一行中的值,返回该表中与找到的值在同一列的另一个值. 什么情况下使用HLOOKUP? HLOOKUP函数可以在查找行中找到精确匹配值 ...

  6. 使用Jedis操作Redis-使用Java语言在客户端操作---对Sorted-Sets的操作

    //对Sorted-Sets操作 /** * Sorted-Sets和Sets类型极为相似,它们都是字符串的集合,都不允许重复的成员出现在一个Set中. * 它们之间的主要差别是Sorted-Sets ...

  7. Cesium 1.50重量级新功能测评

    概要 既Cesium 1.49中3dtile加载性能大幅提升以后,Cesium 1.50再次迎来几个重量级新功能: 1 地球裁切,这下相当于可以截取一部分地形影像数据,当作一个平面场景来用了! 2 射 ...

  8. win10 系统同步时间出错

    设置->时间和语言->区域和语言->其他日期,区域和时间设置->设置时间和日期->Internet时间->更改设置 应该会有两个服务器,分别更新下时间,哪个正确就用 ...

  9. Vue表单验证插件的制作过程

    一.表单验证模块的构成 任何表单验证模块都是由 配置――校验――报错――取值 这几部分构成的. 配置: 配置规则 和配置报错,以及优先级 校验: 有在 change 事件校验, 在点击提交按钮的时候校 ...

  10. 关于rss的内容(转载)

    转载自: https://blog.csdn.net/zhao1949/article/details/52806123 (本文对读者有帮助的话请移步支持原作者) 内容记录: 在C++技术网开通了RS ...