题目链接:codeforces 1119D

题目思路:

数据这么大一定是找规律……求区间里数的个数,与顺序无关,不妨先排个序。不难发现当 a [ i ] + r > = a [ i + 1 ] − l a[i]+r >= a[i+1]-l a[i]+r>=a[i+1]−l 时,就会又重叠的部分。于是想到差分,并对差分数组排序,用前缀和维护前面有重叠的部分。二分查找有重叠和未重叠的分界,即第一个大于等于 len 的下标。

参考代码:

#include <iostream>
#include <algorithm>
#include <cstring>
using namespace std;
typedef long long ll;
const int N = 1e5 + 10;
ll a[N], d[N], pre[N];
int main() {int n, q;cin >> n;for (int i = 1; i <= n; i++) {cin >> a[i];}sort(a+1, a+1+n);n = unique(a+1, a+1+n) - a - 1;for (int i = 1; i <= n-1; i++) {d[i] = a[i+1] - a[i];}sort(d+1, d+n);for (int i = 1; i <= n-1; i++) {pre[i] = pre[i-1] + d[i];}cin >> q;while (q--) {ll l, r, x, len;cin >> l >> r;len = r - l + 1;x = lower_bound(d+1, d+n) - d - 1;cout << pre[x] + (n - x) * len << ' ';}return 0;
}

codeforces1119D Frets On Fire(差分/前缀和/二分)相关推荐

  1. Codeforces Global Round 2 D. Frets On Fire (动态开点线段树,沙雕写法)

    题目链接:D. Frets On Fire 思路:明明可以离散化+二分写,思路硬是歪到了线段树上,自闭了,真实弟弟,怪不得其他人过得那么快 只和查询的区间长度有关系,排完序如果相邻的两个点的差值小于等 ...

  2. poj3061尺取法/前缀和 二分(java)

    今天遇到这题因为以前没见到过,当时就是想着应该有着一个很简单的方法可以过但是奈何就是没思路.后来看了别人思路写了下来.学习了尺取法 poj3061 题目介绍: Description A sequen ...

  3. HRBUST 1909——理工门外的树——————【离线处理,差分前缀和】

    理工门外的树 Time Limit: 1000 MS Memory Limit: 32768 KB 64-bit integer IO format: %lld , %llu Java class n ...

  4. [Leedcode][JAVA][第209题][长度最小的子数组][滑动窗口][前缀和][二分查找][双指针]

    [问题描述][中等] 给定一个含有 n 个正整数的数组和一个正整数 s ,找出该数组中满足其和 ≥ s 的长度最小的连续子数组,并返回其长度.如果不存在符合条件的连续子数组,返回 0.示例: 输入: ...

  5. LeetCode 528. 按权重随机选择(前缀和+二分查找)

    文章目录 1. 题目 2. 解题 1. 题目 给定一个正整数数组 w ,其中 w[i] 代表下标 i 的权重(下标从 0 开始),请写一个函数 pickIndex ,它可以随机地获取下标 i,选取下标 ...

  6. LeetCode 497. 非重叠矩形中的随机点(前缀和+二分查找)

    文章目录 1. 题目 2. 解题 1. 题目 给定一个非重叠轴对齐矩形的列表 rects,写一个函数 pick 随机均匀地选取矩形覆盖的空间中的整数点. 提示: 整数点是具有整数坐标的点. 矩形周边上 ...

  7. AcWing 692. G巴士计数 差分+前缀和

    题目描述 https://www.acwing.com/problem/content/description/694/ 经典的差分再前缀和题目 不断给一个范围内的所有数加上同一个定值,最后再求具体的 ...

  8. Glider(前缀和+二分)

    题目链接:Glider Gym-101911B 解题分析:下落的高度一定,是h.在没有气流的地方每秒下落1:所以可以转化为经过无气流地带的时间总长为h. 那么很显然从一个有气流地带的开始,选择下落,那 ...

  9. 209 长度最小的子数组(前缀和+二分查找、滑动窗口)

    1. 问题描述: 给定一个含有 n 个正整数的数组和一个正整数 s ,找出该数组中满足其和 ≥ s 的长度最小的连续子数组,并返回其长度.如果不存在符合条件的子数组,返回 0. 示例: 输入:s = ...

最新文章

  1. 【组队学习】【29期】6. 动手学数据分析
  2. Argparse简易教程
  3. 微服务改造中解决跨库问题的思路
  4. 初识ABP vNext(6):vue+ABP实现国际化
  5. Asterisk AGI脚本
  6. NLP 《马尔科夫链》
  7. 企业的生存必须找到你的核心竞争力
  8. ASP.NET MVC 5 SmartCode Scaffolding for Visual Studio.Net
  9. Linux后台运行进程命令
  10. Markdown编辑器初步使用
  11. 【转】关于23种设计模式的有趣见解
  12. 国科大学习资料--机器人学导论(张正涛)--2014年期末考试试卷(含答案)
  13. 华为android打开usb调试模式,华为P6 USB调试在哪 如何打开USB调试【详解】
  14. Excel 条件格式实现甘特图
  15. 基于OpenCV的在图片上画刻度尺坐标、分划版、侧微尺、十字双边带刻度
  16. 几个期货基本面因子的研究
  17. 投资分析研究:天然气分布式能源项目
  18. 短期突击面试攻略,收offer如砍瓜切菜!!!
  19. blueprint 实例
  20. 收集一些感觉不错的旅游圣地吧

热门文章

  1. 如何快速来一套苹果全家桶
  2. 5G 700 MHz覆盖分析
  3. 新年了,用python编程设计有意义背景图片的一朵玫瑰花给心爱的人吧
  4. 平安京服务器维护不能打字,决战!平安京|萌新入坑指南 新手注意六大准则
  5. SQL查询语句练习(40道)
  6. 2k21服务器维护时间,《NBA2K ONLINE 2》2月21日停机更新公告
  7. linux启动盘进入命令行,CDLinuxU盘启动命令行到图形界面
  8. Navisworks2014-2020 安装说明
  9. 纵有疾风起,人生不言弃。
  10. 第十六课:应用分发(基于AndroidStudio3.2)