区间和

2023-11-01

模板
模板来自AcWing

vector<int> alls; // 存储所有待离散化的值
sort(alls.begin(), alls.end()); // 将所有值排序
alls.erase(unique(alls.begin(), alls.end()), alls.end());   // 去掉重复元素

// 二分求出x对应的离散化的值
int find(int x) // 找到第一个大于等于x的位置
{
    int l = 0, r = alls.size() - 1;
    while (l < r)
    {
        int mid = l + r >> 1;
        if (alls[mid] >= x) r = mid;
        else l = mid + 1;
    }
    return r + 1; // 映射到1, 2, ...n
}

题目:

区间和
假定有一个无限长的数轴,数轴上每个坐标上的数都是0。

现在,我们首先进行 n 次操作,每次操作将某一位置x上的数加c。

接下来,进行 m 次询问,每个询问包含两个整数l和r,你需要求出在区间[l, r]之间的所有数的和。

输入格式
第一行包含两个整数n和m。

接下来 n 行,每行包含两个整数x和c。

再接下里 m 行,每行包含两个整数l和r。

输出格式
共m行,每行输出一个询问中所求的区间内数字和。

数据范围
−109≤x≤109,
1≤n,m≤105,
−109≤l≤r≤109,
−10000≤c≤10000
输入样例:
3 3
1 2
3 6
7 5
1 3
4 6
7 8
输出样例:
8
0
5

#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
const int N=3e5+10;
typedef pair<int,int> PII;
int n,m;
int a[N],s[N];
vector<int>alls;
vector<PII>add,query;

int find(int x){
    int l=0,r=alls.size()-1;
    while(l<r){
        int mid=l+r>>1;
        if(alls[mid]>=x)r=mid;
        else l=mid+1;
    }
    return r+1;
}


int main(){
    cin>>n>>m;
    for(int i=0;i<n;i++){
        int x,c;
        cin>>x>>c;
        add.push_back({x,c});//将位置x上的数加c
        alls.push_back(x);//记录x
    }
    for(int i=0;i<m;i++){
        int l,r;
        cin>>l>>r;
        query.push_back({l,r});//记录l和r
        alls.push_back(l);
        alls.push_back(r);
    }
    //去重
    sort(alls.begin(), alls.end()); // 将所有值排序
    alls.erase(unique(alls.begin(), alls.end()), alls.end());   // 去掉重复元素
    //处理插入
    for(auto item:add){
        int x=find(item.first);//返回x在alls中的位置
        a[x]+=item.second;
    }
    //处理前缀和
    for(int i=1;i<=alls.size();i++)//a数组的长度就是alls数组的长度
        s[i]=s[i-1]+a[i];
    for(auto item:query){
        int l=find(item.first),r=find(item.second);
        cout<<s[r]-s[l-1]<<endl;
    }
    return 0;
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

区间和 的相关文章

  • 跟我一起写 Makefile(六)

    跟我一起写 Makefile 六 本文来自于CSDN 陈皓博主 网址http blog csdn net haoel article details 2891 详细内容请参考其经典文章 跟我一起写makefile 陈皓
  • 链表面试常见题目

    1 反转链表 头插法 2 合并两个有序链表 3 链表倒数第k个节点 连个节点一个先走 k步 然后两个一起走 走到第一个节点 next为null 4 从尾到头打印 链表 借助栈或者递归 5 复杂链表复制 1 借助map存储 O n 空间 2
  • 串口字符串-HEX格式

    介绍 串口通信过程中 通常涉及一个数据的模拟过程以及数据发送过程 一般来说 我们会发送一串指令给下位机 68 05 00 84 01 02 03 例如这种 我们明白 这是我们 将相应的字符转换成 hex 字符显示 用于表示ascii 字母的
  • @Transactional 失效问题

    Transactional配置起来是简单方便 但是坑也相当多 下面就记录下这些坑 1 service类标签添加在了接口上 查阅资料说接口的方法上可以加也不建议这样用 但实际中这么出现事务失效 2 Transactional 注解只能应用到
  • CSS3 - flex属性

    前言 CSS属性 flex 规定了弹性元素如何伸长或缩短以适应flex容器中的可用空间 这是一个简写属性 用来设置 flex grow flex shrink flex basis flex grow 属性 定义项目的放大比例 默认为0 即
  • MongoDB max 获取最大值 (Golang)

    某个集合 要获取某个字段的最大值 有两种办法 一个是用sort 另一个是用聚合 Aggregate 下面是代码演示 sort var ID uint64 func initIDEx clientOptions options Client
  • count(distinct 多个字段)

    select count distinct col1 col2 col3 from table 但是 这样是不允许的 因为count是不能统计多个字段的 虽然distinct是可行的 有种比较直接的方法就是把消除重复后在统计查询 selec
  • ubuntu 20.4 + openswan 实现点对点VPN

    需求背景 多个IDC机房或者办公地点 不同地址位置 用linux系统和软件 组一个局域网 共享网络资源 需求环境 ubuntu 20 4 openswan 实现点对点VPN 需要技能 熟悉ubuntu 会用日常网络指令 了解网络结构 理解私
  • 使用C++实现Flutter Windows插件

    上周实现的Flutter条形码插件已经发布到https pub dev packages flutter barcode sdk 平台相关部分只包含了Android的Java代码 这周新增用于Windows的C 代码 后续计划还包含iOS和
  • 关于scrapy网络爬虫的xpath书写经验总结

    借助于scapy的爬虫框架 能方便实现低网络数据的爬取 其中xpath如何写法 对元素的定位在爬取过程中起着至关重要的作用 以下是对xpath写法的一些经验 1 优先遵循 自底向上 原则 即从所要爬取的字段节点出发 层层向上 向父节点去遍历
  • 判断App版本号

  • 各个硬件的工作原理

    前情回顾 主存储器的基本组成 存储体 用于存放数据的东西 由一系列的存储元件构成 可以存放二进制的 0 和 1 运算器的基本组成 控制器的基本组成 计算机的工作过程 案例分析 执行指令0 执行指令1 执行指令2 执行指令3 执行指令4 总结
  • Pytorch 提取权重等参数 写入Excel

    Pytorch 提取权重等参数 写入Excel表 标签 Pytorch Topic 网络参数导出 时间 2022 5 27 写在最前 最近有在做量化相关的东西 不确定是不是我这边没设置好怎么 量化后只给出了相应层的s z值 这里就需要将网络
  • JavaWeb-Filter过滤器

    Filter过滤器是JavaWeb的三大组件之一 Filter过滤器是JavaEE的规范也就是接口 Filter的作用是拦截请求 过滤响应 拦截请求常见的应用场景 权限检查 日志操作 事务管理等等 Filter过滤器的基本使用 例如权限检查
  • Activity沉浸式

    沉浸式依赖 implementation com gyf immersionbar immersionbar 2 3 3 beta05 ImmersionBar with this transparentStatusBar 透明状态栏 不写

随机推荐

  • go 源码分析string、[]byte的相互转换

    string 简单的来说字符串是一系列8位字节的集合 通常但不一定代表UTF 8编码的文本 字符串可以为空 但不能为nil 而且字符串的值是不能改变的 不同的语言字符串有不同的实现 在go的源码中src runtime string gos
  • 怎么阅读源码【调试观察源码】

    读源码需要掌握的编译器知识 编译器为eclipse为例子 调试准备工作 步骤 Window gt Show View 打开调试断点Breakpoint 打开变量监视 要看一个方法的内部细节 按f5 进入 要快速跳到某个位置 在目标位置上打个
  • 【蓝桥杯嵌入式最全备考资料】真题、代码、原理图、指导手册、资源包等

    目录 前言 公众号回复 蓝桥杯 获取全部资料 欢迎大家过来关注一起玩呀 一 蓝桥杯嵌入式省赛个人总结的模板流程 十四届模拟试题 详解 超详细 二 第六 十四届省 国赛真题 主观题 客观题 三 蓝桥杯 全国软件和信息技术专业人才大赛实训指导书
  • C#中this的 四种 用法

    C 中的this用法 相信大家应该有用过 但你用过几种 以下是个人总结的this几种用法 欢迎大家拍砖 废话少说 直接列出用法及相关代码 this用法1 限定被相似的名称隐藏的成员
  • WIN10与VMware中的Ubuntu20.04.3系统文件共享(可视化界面居多、无脚本)

    1 在WIN10本地创建一个用于共享的文件夹 2 安装VMware Tools并完成配置 3 开启 共享文件夹
  • 我用了两年时间去读《Thinking in Java》

    路漫漫其修远兮 吾将上下而求索 题记 我用了两年时间去读 Thinking in Java 无论在学校还是在工作 都能听到过来人说 Java编程思想是一本经典著作 于是乎在工作以后 我就买了一本来看看 后来呢 在这断断续续两年时间 精读略读
  • 域名反查、权重查询以及ICP备案查询——ipInfoSearch

    域名反查 权重查询以及ICP备案查询 ipInfoSearch ipInfoSearch 一 配置需要python三方包 二 基本用法 三 多线程用法 文中工具已上传至github https github com Potato py ip
  • 时域和空域和频域

    傅立叶变换是f t 乘以正弦项的展开 正弦项的频率由u 其实是miu 的值决定 因为积分后左边剩下的为一变量是频率 所以我们说傅立叶变换域是频率域 数字图像处理 冈萨雷斯 中文第三版P128 当变量t用于说明图像时 我们一般将变量t的域称为
  • [Python人工智能] 四.神经网络和深度学习入门知识

    从本篇文章开始 作者正式开始研究Python深度学习 神经网络及人工智能相关知识 前三篇文章讲解了神经网络基础概念 Theano库的安装过程及基础用法 theano实现回归神经网络 theano实现分类神经网络 这篇文章又回到基础知识 结合
  • Chromedriver安装教程【无需翻墙】

    第一步 查看你当前Chrome浏览器的版本 如下图所示 第二步 查看当前Chrome浏览器的版本号 如下图所示 版本 108 0 5359 125 正式版本 64 位 中的 108就是我们的版本号 第三步 到谷歌驱动下载地址 https n
  • spring全家桶

    目录 一 Spring基础 1 Spring的核心模块 2 Spring中用到的设计模式 3 Spring SpringMVC SpringBoot SpringCloud 二 SpringIOC 1 IOC的理解 2 Spring中的循环
  • java基础

    java简介 Java是一门面向对象的编程语言 不仅吸收了C 语言的各种优点 还摒弃了C 里难以理解的多继承 指针等概念 因此Java语言具有功能强大和简单易用两个特征 Java语言作为静态面向对象编程语言的代表 极好地实现了面向对象理论
  • psql的使用与常用参数

    使用psql时默认使用安装数据库时的用户登录 端口默认5432 默认连接数据库是用户名db 使用默认用户登录时是超级用户 不需要密码 但是第一次登录会因为未创建该用户名的数据库而登录失败 首次登录需要手动创建用户名数据库或者选择默认的pos
  • Linux中source命令的用法

    source命令 source命令也称为 点命令 也就是一个点符号 source命令通常用于重新执行刚修改的初始化文件 使之立即生效 而不必注销并重新登录 用法 source filename 或 filename source命令除了上述
  • BUUCTF 之 [ACTF2020 新生赛]Exec(命令执行漏洞)

    BUUCTF 之 ACTF2020 新生赛 Exec 命令执行漏洞 相关 观察 进攻 相关 项目 内容 难度 简单 类型 WEB 靶场 BUUCTF 坐标 Exec 观察 这界面和这网页标题结合起来 相信给位都能猜到这个靶场中很有可能存在命
  • 类和对象的学习

    类和对象的学习 1 什么是类 class 就是声明一个类 概念 一类事物的总体描述 及该事物包含方法的总称 属性 描述这个事物的 方法 这个事物特有的行为 定义一个学生类 属性 名字 年龄 性别 方法 吃饭 睡觉 学习 打游戏 2 封装一个
  • 《创新创业实训》网课答案解析

    创新创业实训 网课答案解析 一 网课的简单介绍 二 部分习题的展示 三 获取全部内容 一 网课的简单介绍 创新创业实训 是我之前选的一门网课 由于其比较小众 所以很多课后题很难在网上找到答案 为了帮助后续选择这门课的同学 这里我将该网课所涉
  • Zabbix--API接口

    一 API的简单介绍 Zabbix API允许你以编程方式检索和修改Zabbix的配置 并提供对历史数据的访问 1 应用 1 创建新的应用程序以使用Zabbix 2 将Zabbix与第三方软件集成 3 自动执行常规任务 2 意义 abbix
  • RabbitMQ多种问题出现的解决方案

    消息丢失 1 只要订单完成我们就会发送一条消息给MQ 这个途中突然MQ服务器网络中断 导致消息无法抵达 做好容错方法需要在消息发送前加上异常处理 try rabbitTemplate convertAndSend order event e
  • 区间和

    模板 模板来自AcWing vector