CF816B Karen and Coffee

题意:给定n个区间和q组询问区间,每次询问某个区间内有多少个数字被k个或k个以上的重叠区间覆盖。
解法:因为这一题的数字值域范围很小,很清晰的可以想到应该是要统计每个数字有多少个区间覆盖,这一步可以使用差分实现,而最最关键的是后面这步,现在对于每个数字我们都能知道它被多少个区间覆盖,但是询问的是一个区间内>=k的数字有多少个,知道分块可以做,但是时间可能卡不过去?毕竟2e5,其实能过,常数较小 ,转念一想,觉得这肯定是某数据结构,于是就去百度“询问一个区间内大于等于k的数字有多少个” ,看到了熟悉的某可持久化数据结构,这可是div2的B题啊,重来没见过这个地方考分块或者主席树(主席树还要加二分)的,其实就套个前缀和就好了,每个>=k的数字标记为1,其他是0,做一次前缀和…是不是秒懂…人傻了…经历了一场从南到北的思想风暴,一个好的思维真的能大大减少代码量。
代码

#include  <algorithm>
#include  <iostream>
#include  <cstring>
#include  <vector>
#include  <cstdio>
#include  <queue>
#include  <cmath>
#include  <set>
#include  <map>
#include<bitset>
#define fio ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
#define _for(n,m,i) for (register int i = (n); i < (m); ++i)
#define _rep(n,m,i) for (register int i = (n); i <= (m); ++i)
#define lson rt<<1, l, mid
#define rson rt<<1|1, mid+1, r
#define PI acos(-1)
#define eps 1e-9
#define rint register int
#define F(x) ((x)/3+((x)%3==1?0:tb))
#define G(x) ((x)<tb?(x)*3+1:((x)-tb)*3+2)
using namespace std;
typedef long long LL;
typedef pair<LL, int> pli;
typedef pair<int, int> pii;
typedef pair<double, int> pdi;
typedef pair<LL, LL> pll;
typedef pair<double, double> pdd;
typedef map<int, int> mii;
typedef map<LL, int> mli;
typedef map<char, int> mci;
typedef map<string, int> msi;
template<class T>
void read(T &res) {int f = 1; res = 0;char c = getchar();while(c < '0' || c > '9') { if(c == '-') f = -1; c = getchar(); }while(c >= '0' && c <= '9') { res = res * 10 + c - '0'; c = getchar(); }res *= f;
}
const int ne[8][2] = {1, 0, -1, 0, 0, 1, 0, -1, -1, -1, -1, 1, 1, -1, 1, 1};
const int INF = 0x3f3f3f3f;
const int N = 2e5+10;
const LL Mod = 1e9+7;
const int M = 3e5+10;
int n, k, q;
int sum[N];
int main() {scanf("%d %d %d", &n, &k, &q);int l, r;_rep(1, n, i) {scanf("%d %d", &l, &r);++sum[l]; --sum[r+1];}//第一次前缀和_for(1, N, i) {sum[i] += sum[i-1];if(sum[i-1] >= k) sum[i-1] = 1;else sum[i-1] = 0;}//第二次前缀和_for(1, N, i) sum[i] += sum[i-1];while(q--) {scanf("%d %d", &l, &r);printf("%d\n", sum[r] - sum[l-1]);}return 0;
}

CF816B Karen and Coffee题解相关推荐

  1. 180418 Karen and Coffee 题解

    题目描述 Karen 喜欢咖啡. 她有 n 本食谱,第 ii 本食谱包含两个数 l[i],r[i],表示这本食谱推荐用 [l[i],r[i]]之间的温度(包含 l_i.r_ili​.ri​)来煮咖啡. ...

  2. [CF816B] Karen and Coffee(前缀和,思维)

    题目链接:http://codeforces.com/contest/816/problem/B 题意:一个大区间被n条线覆盖,接下来有q次询问,询问[l,r]内有多少个点被>=k个线覆盖. 区 ...

  3. Karen and Coffee 爱思创题解

    前言: 本题为作业 题目描述 Karen 喜欢咖啡. 她有 n 本食谱,第 i 本食谱包含两个数 li​,ri​,表示这本食谱推荐用 [li​,ri​] 之间的温度(包含 li.ri)来煮咖啡. Ka ...

  4. codeforces 816 B. Karen and Coffee(思维)

    题目链接:http://codeforces.com/contest/816/problem/B 题意:给出n个范围,q个查询问查询区间出现多少点在给出的n个范围中至少占了k次 题解:很显然的一道题目 ...

  5. 暑假多校训练营选拔赛

    CF282A Bit++ 题目链接 题意 其中X++,++X表示把 X 加 1 ,X–,–X表示把 X 减 1 . 思路 判断是加还是减 进行计算 最后输出结果 坑点 无 代码 #include< ...

  6. Codeforces Round #419 (Div. 2)

    1.题目A:Karen and Morning 题意: 给出hh:mm格式的时间,问至少经过多少分钟后,该时刻为回文字符串? 思路: 简单模拟,从当前时刻开始,如果hh的回文rh等于mm则停止累计.否 ...

  7. Codeforces 题目合集+分类+代码 【Updating...】【361 in total】

    961A - Tetris                                                模拟                                      ...

  8. 2018国庆第四场个人赛

    前三个题超水 29分钟一遍AC  仔细看最后的题 Little C loves number «3» very much. He loves all things about it. Now he h ...

  9. 题解 | Coffee Chicken-2019牛客暑期多校训练营第十场B题

    题目来源于牛客竞赛:https://ac.nowcoder.com/acm/contest/discuss 题目描述: 输入描述: 输出描述: 示例1: 题解: 代码: #!/usr/bin/pyth ...

  10. 蒟蒻的第一篇博客CF1041C Coffee Break(二分+贪心+set)

    CF1041C Coffee Break(二分+贪心+set) 描述 Recently Monocarp got a job. His working day lasts exactly mm min ...

最新文章

  1. Tomcat软件的目录结构、作用
  2. 有关Gradle Network is unreachable: connect的报错
  3. 爬虫python需要什么软件-学python爬虫能做什么
  4. c++17(22)-reinterpret_cast和new动态空间内存申请
  5. FreeBSD长模式不兼容
  6. 项目实战,平均负载过高,最后发现却是这个搞鬼
  7. 视觉意识的主动推理模型
  8. jssdk信息验证失败_阿里云环境中TLS/SSL握手失败的场景分析
  9. 【Flink】Pending record count must be zero at this point : 1
  10. java android 打地鼠_Android实现打地鼠小游戏
  11. 杂谈--穷人和富人的区别(觉得很有道理,需要反思自己的日常行为)
  12. 自然语言处理入门——RNN架构解析
  13. java applet 教程_教你构建第一个Java Applet程序
  14. Linux网络配置(NAT模式)
  15. Spring Boot入门教程(三十七):支付宝集成-手机网站支付
  16. 阿里云视频直播使用详细步骤
  17. 题目内容: 写一个将华氏温度转换成摄氏温度的程序,转换的公式是: °F = (9/5)*°C + 32 其中C表示摄氏温度,F表示华氏温度。 程序的输入是一个整数,表示华氏温度。输出对
  18. 2020年12月六级真题翻译(北京大兴国际机场)
  19. HBase安装以及基本操作
  20. mac 10.13.5, texpad 1.7.40安装教程

热门文章

  1. 织梦dedecms 模板代码标签学习
  2. File.ReadAllText读取文件中文乱码
  3. 计算机中职生毕业鉴定评语,中职生学生毕业鉴定评语
  4. 短文阅读1:Entire Space Multi-Task Model: An Effective Approach for Estimating Post-Click Conversion Rate
  5. 从零开始学习CANoe(四)—— 设计panel
  6. [matlab实践应用]matlab实现读取xls表格并三次样条插值拟合压杆稳定实验数据
  7. 真正决定人生高度的,是你做事的速度
  8. C#-Event事件
  9. 数字孪生交通仿真(一)
  10. UE4 用spline画正圆