题目链接 :http://codeforces.com/contest/816/problem/B

题意 :给出 n 表示区间个数,限定值 k 以及问询次数 q,当一个数被大于或等于 k 个区间重复覆盖时才算有效数,每一次问询都是以区间方式给出,例如(L, R)问你在这个L~R的范围内有多少个数是有效数(即包含这些数的区间个数>=k)。

分析 : 这题可以预先统计哪些数被大于或者等于 k 个原始区间重复覆盖,只要提前将这些满足条件的数递增地编上权值构成前缀和序列,然后对于每段问询只要将前缀和序列做个减法即可,例如找到了 a1  a2  a3这三个数构是满足条件的,令sum[a1]=1,sum[a2]=2,sum[a3]=3,如果问询(a2,a3)这个区间满足条件的数,则只要将对应的权值做个减法即可,即sum[a3] - sum[a2-1]。关于如何统计有效的数,可以这样做,令arr数组存储的是区间信息,对于给出的 n 个区间 (L,R),只要将arr[L]++,arr[R+1]--(R+1相当于区间结束标识,这种技巧在POJ  Matrix这题便有涉及),然后采用动态规划从前往后扫一遍和,当和>=k的时候那此时这个点便是满足条件的,给其加上权值构建前缀和序列。可能说的有点乱,看代码即知。

#include<bits/stdc++.h>
using namespace std;
;
int arr[maxn], sum[maxn], cnt[maxn];
int main(void)
{
    int n, k, q;
    scanf("%d %d %d", &n, &k, &q);
    ; i<n; i++){
        int L, R;
        scanf("%d %d", &L, &R);
        arr[L]++, arr[R+]--;
    }
    sum[] = arr[];
    ; i<maxn; i++){
        sum[i] = sum[i-] + arr[i];//记录从左到右扫出来的和,其实这个和就代表了区间的个数,由每个区间的左端点贡献
        cnt[i] = cnt[i-] + (sum[i]>=k);//cnt为前缀和序列,如果当前的和>=k则对这个点在前缀和序列+1
    }
    while(q--){
        int L, R;
        scanf("%d %d", &L, &R);
         printf(]);
    }
    ;
}

最新文章

  1. 【web前端面试题整理08】说说最近几次面试(水)
  2. TCP协议三次握手和四次挥手
  3. css3、html5学习笔记
  4. postgres中的中文分词zhparser
  5. kali linux 2.0安装sublime text 2
  6. HTTP协议 概述
  7. I2C串行总线标准驱动程序(C51)-万能程序
  8. Ansible11:变量详解【转】
  9. CSS3弹性伸缩布局(下)——flex布局
  10. Linux内核原理与分析-第一周作业
  11. 例:三位老师对某次数学竞赛进行了预测,他们的预测如下:   甲:学生A得了第一名,学生B得第三名。   乙:学生C得了第一名,学生D得第四名。   丙:学生D得了第二名,学生A得第三名。 结果表明,他们都说对了一半,说错了一半,并且无并列名次,输出A、B、C和D各自的名次。
  12. Python通过百度Ai识别图片中的文字
  13. Confluence 6 诊断
  14. 【最短路】道路重建 @upcexam5797
  15. Linux程序的执行
  16. java过滤器、监听器、拦截器机制
  17. JDK5.0 特性-线程 Condition
  18. Android——开机启动功能(Service和BroadcastReceiver)
  19. POP按钮动画
  20. UVa 11419 SAM I AM (最小覆盖数)

热门文章

  1. []转帖]linux 上修改了nginx.conf 怎么重新加载配置文件生效
  2. [转帖]PostgreSQL pg_dump&amp;psql 数据的备份与恢复
  3. 02: kubernetes安装
  4. php开发环境推荐使用
  5. 在docker容器中为elasticsearch配置跨域访问
  6. 关于导航自定义视图距离边界问题,点击状态栏TableView不能回滚到顶部问题
  7. Maven项目构建利器03——第一个Maven工程
  8. 微信小程序 setData动态设置数组中的数据
  9. pycharm使用已经配置好的virtualenv环境
  10. System.Windows.Forms.Application.DoEvents();