题目链接:http://acm.hi-54.com/problem.php?pid=2098

2098 : Drink coffee

时间限制:1 Sec 内存限制:256 MiB
提交:32
答案正确:9

题目描述

为了在上课时保持清醒,凯伦需要一些咖啡。咖啡爱好者凯伦想知道最佳的温度来冲煮完美的咖啡。因此,她花了一些时间阅读几本食谱,其中包括广受好评的“咖啡的艺术”。

她知道有n个食谱,其中第i个食谱建议应当在li和ri度之间冲煮以达到最佳的味道。凯伦认为如果至少k个食谱推荐某个温度,那么那个温度是可以接受的。

凯伦的性格比较多变,因此她会问q个问题,对于每一个问题,她会给出一个温度区间[a,b],你要告诉她有多少可接受的整数温度在这个范围内。

输入

第一行输入包含三个整数,n,k(1≤k≤n≤200000)和q(1≤q≤200000),如题中所描述。

接下来n行描述每一个食谱,具体来说,其中的第i行包含两个整数li和ri(1≤li≤ri≤200000),描述第i个食谱建议咖啡在li和ri度之间进行冲煮(包括端值)。

接下来q行为q个询问。这些行中的每一行都包含a和b,(1≤a≤b≤200000),表示她想知道a和b度之间的可接受的整数温度的数量,包括a和b。

输出

对于每个询问,输出一个答案。

样例输入

复制
3 2 4
91 94
92 97
97 99
92 94
93 97
95 96
90 100

样例输出

复制
3
3
0
4 题意就是先给几个区间,每次都对区间中所有元素累加一次,
最后询问Q次,问在某个区间内次数大于k这样的数字有几个。 就是个裸的树状数组啊,可是以前刷树状数组的时候没写过区间更新区间查询的题,太久没写树状数组,突然手生,比赛时候没写出来。 然后这道题,用到了差分的思想,每次对区间开始和结束进行差分标记(等等,好像写过类似的,想起来了当时写HDU1556
还写了这个博客)no wonder感觉在哪见过类似思想。 赛后补了下区间修改,看了这个博客:https://blog.csdn.net/noiau/article/details/76531671
我应该会了,吧?
哦,对了本题AC代码:
#include<cstdio>
#include<iostream>
#include <cstring>
#include <algorithm>
#include <queue>
#include<cmath>
#define ll long long
using namespace std;
const int maxn=2e5+;
int Tree[maxn],n,ans[maxn],sum[maxn];
inline int lowbit(int x)
{
return (x&-x);
}
void add(int x,int val)
{
for(int i=x;i<maxn;i+=lowbit(i))
Tree[i]+=val;
}
int get(int x,int y)
{
int sum1=,sum2=;
for(int i=x;i>;i-=lowbit(i))
sum1+=Tree[i];
for(int i=y;i>;i-=lowbit(i))
sum2+=Tree[i];
return sum2-sum1;
}
int main()
{
int n,k,q,x,y;
while(~scanf("%d%d%d",&n,&k,&q))
{
memset(Tree,,sizeof(Tree));
memset(ans,,sizeof(ans));
memset(sum,,sizeof(sum));
for(int i=;i<n;i++)
{
scanf("%d%d",&x,&y);
ans[x]++; ans[y+]--;
}
for(int i=;i<=maxn;i++)
{
sum[i]=sum[i-]+ans[i];
if(sum[i]>=k) add(i,);
}
for(int i=;i<=q;i++)
{
scanf("%d%d",&x,&y);
printf("%d\n",get(x-,y));
}
}
return ;
}



ZZNU 2098 Drink coffee(差分+树状数组)的更多相关文章

  1. 差分+树状数组【p4868】Preprefix sum

    Description 前缀和(prefix sum)\(S_i=\sum_{k=1}^i a_i\). 前前缀和(preprefix sum) 则把\(S_i\)作为原序列再进行前缀和.记再次求得前 ...

  2. 差分+树状数组 线段树【P2357】 守墓人

    题目描述-->p2357 守墓人 敲了一遍线段树,水过. 树状数组分析 主要思路: 差分 简单介绍一下差分(详细概念太麻烦,看下面. 给定一个数组 7 8 6 5 1 8 18 20 35 // ...

  3. gym102220H 差分+树状数组(区间修改和输出)

    这题目很有意思,让我学会了树状数组的差分,更加深刻理解了树状数组 树状数组的差分写法 void add(int x,int k) { for (int i = x;i <= n;i += low ...

  4. 洛谷P3246 [HNOI2016]序列(离线 差分 树状数组)

    题意 题目链接 Sol 好像搞出了一个和题解不一样的做法(然而我考场上没写出来还是爆零0) 一个很显然的思路是考虑每个最小值的贡献. 预处理出每个数左边第一个比他小的数,右边第一个比他大的数. 那么\ ...

  5. LOJ.#6468. 魔法[差分+树状数组]

    题意 题目链接 分析 将询问差分并不断加入颜色. 每种颜色,一个位置 \(p\) 都只会走到与之左右相邻的两个位置之一,分类讨论 \(\rm |A-B|\) 的符号. 实现可以使用树状数组. 总时间复 ...

  6. BZOJ3881 Coci2015Divljak(AC自动机+树上差分+树状数组)

    建出AC自动机及其fail树,每次给新加入的串在AC自动机上经过的点染色,问题即转化为子树颜色数.显然可以用dfs序转成序列问题树状数组套权值线段树解决,显然过不掉.事实上直接树上差分,按dfs序排序 ...

  7. P5057 [CQOI2006]简单题 前缀异或差分/树状数组

    好思路,好思路... 思路:前缀异或差分 提交:1次 题解:区间修改,单点查询,树状数组,如思路$qwq$ #include<cstdio> #include<iostream> ...

  8. P3250 [HNOI2016] 网络 (树剖+堆/整体二分+树上差分+树状数组)

    解法1: 本题有插入路径和删除路径,在每个节点维护插入堆和删除堆,查询时两者top一样则一直弹出.如果每个节点维护的是经过他的路径,显然有些不好处理,正难则反,每个点维护不经过他的路径,那么x节点出了 ...

  9. luogu3250 网络 (整体二分+树上差分+树状数组)

    首先整体二分,问题变成是否存在经过一个点的满足条件的路径 那么我对于每个路径(a,b,lca),在树状数组的dfn[a]++,dfn[b]++,dfn[lca]--,dfn[fa[lca]--] 然后 ...

随机推荐

  1. ENVIRONMENT

    ENVIRONMENT Generalizations Congratulations! You learned to use the bash profile to configure the en ...

  2. MYSQL性能优化(2)

    Insert语句优化 1.  多行并为一个语句  insert into table values (行1),(行2),........... 2. 使用中间内存队列, 逻辑是立马执行插入,其他数据放 ...

  3. String、StringBuffer、StringBuilder区别

    String.StringBuffer.StringBuilder区别 StringBuffer.StringBuilder和String一样,也用来代表字符串.String类是不可变类,任何对Str ...

  4. SpringCloud详解

    来源于纯洁的微笑 http://www.ityouknow.com/spring-cloud.html

  5. lenet-5

    https://blog.csdn.net/happyorg/article/details/78274066 深度学习 CNN卷积神经网络 LeNet-5详解 2017年10月18日 16:04:3 ...

  6. Django的rest_framework的分页组件源码分析

    前言: 分页大家应该都很清楚,今天我来给大家做一下Django的rest_framework的分页组件的分析:我的讲解的思路是这样的,分别使用APIview的视图类和基于ModelViewSet的视图 ...

  7. 查询Oracle 临时表空间使用情况[z]

    [z]http://blog.itpub.net/28697282/viewspace-1441321/ SELECT d.tablespace_name “Name”, TO_CHAR(NVL(a. ...

  8. echart.js在vue中使用

    以前可能写过,懒得去翻了,再写一次 1,安装echarts   导入到页面 import echarts from 'echarts'; 2.在生命周期里面做初始化 data(){ return{ t ...

  9. Linux驱动之同步、互斥、阻塞的应用

    同步.互斥.阻塞的概念: 同步:在并发程序设计中,各进程对公共变量的访问必须加以制约,这种制约称为同步. 互斥机制:访问共享资源的代码区叫做临界区,这里的共享资源可能被多个线程需要,但这些共享资源又不 ...

  10. 单点登录(SSO)原理与案例

    单点登录业务流程 概要 详细流程 单点登录系统一共有三个模块,1.服务端 2.客户端 3.代理模块端 用户发送访问客户端的请求,被客户端的代理模块的拦截器拦截,判断cookie中是否含有token(令 ...