http://www.lightoj.com/volume_showproblem.php?problem=1088

题意:给出N个点,Q个查询,问在区间内的点数有多少个。

思路:直接在线二分,注意边界问题

/** @Date    : 2016-12-17-19.03* @Author  : Lweleth (SoungEarlf@gmail.com)* @Link    : https://github.com/* @Version :*/
#include<bits/stdc++.h>
#define LL long long
#define PII pair
#define MP(x, y) make_pair((x),(y))
#define fi first
#define se second
#define PB(x) push_back((x))
#define MMG(x) memset((x), -1,sizeof(x))
#define MMF(x) memset((x),0,sizeof(x))
#define MMI(x) memset((x), INF, sizeof(x))
using namespace std;const int INF = 0x3f3f3f3f;
const int N = 1e5+20;
const double eps = 1e-8;int a[N];
int query(int x, int y, int n)//二分细节阿阿阿 边界问题
{int p1 = -1, p2 = -1;int l = 0, r = n - 1;while(l <= r){int mid = (l + r) >> 1;//cout << "l1:" < a[mid])l = mid + 1;}l = 0, r = n - 1;while(l <= r){int mid = (l + r) >> 1;//cout << "l2:" <= a[mid])l = mid + 1, p2 = mid;}if(!(~p1) || !(~p2))//return 0;elsereturn p2 - p1 + 1;
}int main()
{int T;int cnt = 0;cin >> T;while(T--){int n, q;scanf("%d%d", &n, &q);for(int i = 0; i < n; i++)scanf("%d", a + i);printf("Case %d:\n", ++cnt);while(q--){int x, y;scanf("%d%d", &x, &y);int ans = query(x, y, n);printf("%d\n", ans);}}return 0;
}

转载于:https://www.cnblogs.com/Yumesenya/p/6219705.html

LightOJ 1088 - Points in Segments 二分相关推荐

  1. CF429E Points and Segments(欧拉回路)

    CF429E Points and Segments 给定n 条线段[li,ri][l_i,r_i][li​,ri​] ,然后给这些线段红蓝染色,求最后直线上上任意一个点被蓝色及红色线段覆盖次数之差的 ...

  2. Codeforces Round #245 (Div. 1) E. Points and Segments 欧拉回路 + 建模

    传送门 文章目录 题意: 思路: 题意: 思路: 考虑对于线段,如何建模. 我们考虑先将线段转换成左闭右开的形式,将左右点连起来. 再考虑每个点,将所有离散化后的点拿出来,每个点都有一个度,现在问题就 ...

  3. CF429E Points and Segments

    链接 CF429E Points and Segments 给定\(n\)条线段,然后给这些线段红蓝染色,求最后直线上上任意一个点被蓝色及红色线段覆盖次数之差的绝对值不大于\(1\),构造方案,\(n ...

  4. Gym - 100889H Hitting Points 计算几何+三分+二分

    题目链接 Hitting Points 题意 按逆时针顺序给你二维平面上严格凸包的n个点,编号0到n-1, 有q次询问, 每次询问确定一个编号为idx的基础点, 以idx和(idx+1)%n构成的向量 ...

  5. Match Points CodeForces 1156C 二分答案

    CodeForces 1156C Match Points 传送门:https://codeforces.com/problemset/problem/1156/C You are given a s ...

  6. Lightoj 1062 Crossed Ladders (二分)

    题目链接:http://www.lightoj.com/volume_showproblem.php?problem=1062 题意:两根棍子斜放在墙上,给你棍子的长度和他们交点距离地面的高度 ,求两 ...

  7. CodeForces 895 B. XK Segments 二分查找

    题意 定义n个数和x 让我们在这n个数中找出 多少个不同的对 分析 观察条件我们要找的是对于一个元素ai 找到另外一个元素 aj 使得a[i]<=a[j] 所以我们需要排序 也就是对于每一个元素 ...

  8. LightOJ 1266 - Points in Rectangle 二维树状数组

    题目链接 题意:给一个平面,有两个操作 0 x y 在(x,y)处放置一个点 1 x1 y1 x2 y2 查询左下角为(x1,y1),右上角为(x2,y2)的矩形区域包含多少个点(包括边界) 使用二维 ...

  9. lightoj刷题日记

    开始板刷lightoj,每天题量>=1: 题目的类型会在这边说明,具体见分页博客: ----------------- 必须要update了... so...板刷第二页搞呀--2017/4/17 ...

最新文章

  1. C# 用tabcontrol实现窗体类似网页排版的显示
  2. 成功解决Cannot find declaration to go to
  3. 模仿网易新闻客户端的滚动菜单
  4. Python socket TCP
  5. SQL Server中的动态数据屏蔽
  6. 小程序数据框有重影_小程序开发(二):数据绑定
  7. 课程设计(飞机订票系统) 超全
  8. 【LAMMPS系列】LAMMPS软件安装资料包
  9. 外设驱动库开发笔记41:ADS1256 ADC驱动
  10. virtualbox 清理磁盘占用空间
  11. 在浏览器中简单输入一个网址,解密其后发生的一切(http请求的详细过程)
  12. endnote修改正文中参考文献标注_Endnote之文献标注
  13. python语言程序设计基础上海交通大学_python语言程序设计基础第四章答案
  14. GCC 优化选项 -O -O0 -O1 -O2 -O3 -Os 简单介绍
  15. EditPlus字体放大方法
  16. 判断用户输入的年份(平年或闰年)
  17. 超好看的二次元透明网站登录页模板
  18. java long转日期,long转String
  19. 矩阵导数(Matrix Differentia)
  20. Canvas特效动画

热门文章

  1. 华为stfal00是什么手机_opporeno5pro和华为p40pro有什么区别 哪款手机更好
  2. 2021中大厂php+go面试题(1)
  3. Wireshark学习笔记——如何快速抓取HTTP数据包
  4. 【408预推免复习】操作系统之处理机调度与死锁
  5. 【深度学习】深入浅出神经网络框架的模型元件(常用层和卷积层)
  6. 机器学习(MACHINE LEARNING)多属性决策模型
  7. 打开c语言运行不了_手机上有哪些不错的c语言编程软件?
  8. matlab手动抠取圆形区域_利用Photoshop通道工具扣取人物头发教程-PS抠图
  9. java 打破双亲委派_JVM - 打破双亲委派机制(模拟热加载)
  10. python 面向对象_Python新手入门【面向对象】