【出行计划 / 2】

news2024/11/24 16:41:19

题目


在这里插入图片描述



思路

暴力 O ( m ⋅ n ) O(m \cdot n) O(mn)            \;\;\;\;\; 不可行

树状数组+差分 O ( m ⋅ l o g ( 5 e 5 ) ) O(m \cdot log(5e^{5})) O(mlog(5e5))            \;\;\;\;\; 可行

具体思路:

  1. t [ i ] ∈ [ q + k − c [ i ] + 1 ,    q + k ] t[i] \in [q+k-c[i]+1, \;q+k] t[i][q+kc[i]+1,q+k] 转换为 q + k ∈ [ t [ i ] − c [ i ] + 1 ,    t [ i ] ] q + k \in [t[i]-c[i]+1, \;t[i]] q+k[t[i]c[i]+1,t[i]]
  2. 为了使得范围不存在负数: q + k + 2 e 5 ∈ [ t [ i ] − c [ i ] + 1 + 2 e 5 ,    t [ i ] + 2 e 5 ] q+k+2e^{5}\in [t[i]-c[i]+1+2e^{5}, \;t[i]+2e^{5}] q+k+2e5[t[i]c[i]+1+2e5,t[i]+2e5]
  3. 预处理:对于每个出行计划,将映射到的范围的值通过 O ( 1 )    时间 O(1)\;时间 O(1)时间 的差分操作 + 1 +1 +1
  4. 区间求和:最后对于每次询问,直接用树状数组的 q u e r y 函数 query函数 query函数 O ( l o g n )    时间 O(logn)\;时间 O(logn)时间 求出该点处的实际值
  5. 确定树状数组大小: 存在操作 q u e r y ( q + k + 2 e 5 ) , M = 5 e 5 query(q + k + 2e^{5}), M = 5e^{5} query(q+k+2e5)M=5e5


TLE代码


#include <bits/stdc++.h>
using namespace std;
const int N = 1e5+10;
int t[N], c[N];
int n, m, k;
int main()
{
    cin >> n >> m >> k;
    
    for(int i = 1; i <= n; i++) cin >> t[i] >> c[i];
    
    while (m -- ){
        int q;
        cin >> q;
        q += k;
        int cnt = 0;
        int l = q;
        for(int i = 1; i <= n; i++)
        {
            int r = l + c[i] - 1;
            if(t[i] >= l && t[i] <= r) cnt++;
        }
        
        cout << cnt << endl;
    }
    
    return 0;
}


正确代码


#pragma GCC optimize(3)
#include <bits/stdc++.h>
using namespace std;
const int N = 1e5+10, M = 5e5+10;
int t[N], c[N];
int n, m, k;
int b[M];
int lowbit(int x)
{
    return x & -x;
}
void update(int x, int d)
{
    for(; x < M; x += lowbit(x)) b[x] += d;
}
int query(int x)
{
    int retval = 0;
    for(; x; x -= lowbit(x)) retval += b[x];
    return retval;
}
void add(int l, int r, int d)
{
    update(l, d);
    update(r+1, -d);
}
int main()
{
    ios::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    
    cin >> n >> m >> k;
    
    for(int i = 1; i <= n; i++)
    {
        cin >> t[i] >> c[i];
        add(t[i]-k-c[i]+1+3e5, t[i]-k+3e5, 1);
    }

    while(m--)
    {
        int q;
        cin >> q;
        cout << query(q+3e5) << endl;
    }
    return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2101044.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

stm32的内部时钟源 | RC震荡电路

文章目录 前言学习了解 前言 了解到 内部高速RC振荡器&#xff08;HSI&#xff09;就是RC震荡器实现的&#xff0c;故想对RC震荡做些了解与分析。 学习了解 【不需要晶振&#xff0c;也可产生时钟脉冲&#xff01;RC振荡器的工作原理&#xff0c;维恩电桥振荡器&#xff01;…

电脑连接公司服务器记住了账户密码,怎么换账户呢?

今天&#xff0c;有同事找到我&#xff0c;说共享连不上去了&#xff0c;我去试了下&#xff0c;知道了原因&#xff1a;由于我将之前使用这台电脑的人的账户在后台禁用了&#xff0c;所以这台电脑连不上服务器了&#xff0c;也不是连不上&#xff0c;而是之前是记住了账户密码…

基于vue框架的超市商品管理系统m9o29(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。

系统程序文件列表 项目功能&#xff1a;商品信息,商品分类,进货入库,员工,销售出库 开题报告内容 基于Vue框架的超市商品管理系统开题报告 一、研究背景与意义 在快速变化的零售市场中&#xff0c;超市作为商品销售的重要渠道&#xff0c;其商品管理效率直接影响到顾客满意…

dbeaver配置hive连接

环境 os: windows 11 dbeaver: 22.3.1 hive: version&#xff1a; apache-hive-3.1.2 配置dbaeaver hive driver 点击编辑驱动设置 1、删除默认驱动配置 2、添加hive 安装文件 jdbc 中驱动文件 3、点击找到类 &#xff0c;配置正确跳出驱动类 4、确认 点击测试链接 成功之后…

从源码开始:打造智能化食堂采购与供应链管理平台

随着食堂规模的扩大和供应链的复杂化&#xff0c;这些问题更加突出。智能化的食堂采购平台可以通过自动化流程、数据分析和智能推荐&#xff0c;显著提高采购效率&#xff0c;减少浪费&#xff0c;并降低运营成本。 要打造这样一个平台&#xff0c;首先需要对食堂的日常运营需…

基于三维视频融合技术的矿山视频监控系统

传统矿山视频监控存在视频数据量大&#xff0c;视频图像之间关联性差&#xff0c;缺乏与三维空间位置信息的直接联动等问题&#xff0c;监管人员在面对多个碎片化的监控视频图像时难以有效复现场景及位置&#xff0c;这使得突发事件发生时不能及时解决相关问题&#xff0c;严重…

台球助教系统源码开发的发展前景

随着移动互联网的快速发展&#xff0c;小程序作为一种轻量级的应用形态&#xff0c;逐渐成为连接线上线下服务的重要桥梁。在体育领域&#xff0c;特别是像台球这样的精细运动项目中&#xff0c;小程序的应用为运动员提供了更为便捷的学习和训练手段。本文将探讨台球助教系统小…

【 OpenHarmony 4.1 Launcher 源码解析 】-- 初体验

前言 最近因为业务需要&#xff0c;需要做一款 UI 定制的鸿蒙 Launcher&#xff0c;于是就开始了「找到代码」、「研究代码」、「魔改代码」的套路流程&#xff0c;仅以此文章作为知识备份和技术探讨所用&#xff0c;也希望能给其他小伙伴提供一些源码的解析思路&#xff0c;方…

【Anaconda】修改jupyter notebook默认打开的工作目录、jupyter notebook快捷键

jupyter notebook快捷键 针对单元格的颜色蓝色命令行模式绿色编辑模式 两种模式的切换编辑模式切换到命令行模式 >>> esc键命令行模式切换到编辑模式 >>> 鼠标左键或者直接按enter键1.标题的书写方式1:1.esc进入命令行模式2.按m键3.写内容4.运行单元格即可方…

读懂以太坊源码(2)-重要概念Gas

在以太坊中&#xff0c;gasLimit、gasUsed和gasPrice是三个重要的概念&#xff0c;它们之间有特定的含义和关系。 一、含义 gasLimit&#xff1a; 含义&#xff1a;每个区块或每笔交易都有一个 gas 限制。对于一个区块来说&#xff0c;gasLimit是该区块中所有交易可以消耗的最…

日常避坑指南:如何合理利用Swap优化MongoDB内存管理

MongoDB作为一款高性能的NoSQL数据库,广泛应用于大数据处理和实时应用中。然而,面对批量数据写入时,MongoDB对内存的需求极为苛刻,尤其是在测试服务器或资源受限的环境下,容易引发系统性能问题。本文将探讨如何通过合理利用Swap来优化MongoDB的内存管理,确保系统的稳定运…

Unity(2022.3.41LTS) - UI详细介绍-Scroll View(滚动视图)

目录 零.简介 一、基本功能与用途 二、主要组件 Rect Transform&#xff08;矩形变换&#xff09;&#xff1a; Scroll Rect&#xff08;滚动矩形&#xff09;组件&#xff1a; Scrollbar&#xff08;滚动条&#xff09;组件&#xff1a; Mask&#xff08;遮罩&#xff…

算法笔试-编程练习-M-01-24

t这套题&#xff0c;偏向灵活&#xff0c;更多的考察了数学、贪心 一、质因数 题目描述 小乖对 gcd (最大公约数) 很感兴趣, 他会询问你t次。 每次询问给出一个大于 1 的正整数 n, 你是否找到一个数字m(2 ≤m ≤ n)&#xff0c;使得 gcd(n,m)为素数. 注&#xff1a;原题为给…

构建高效智慧水务平台的关键要素有哪些?

在推进智慧水务平台建设的过程中&#xff0c;需着重注意以下几点&#xff0c;以确保系统的先进性与实用性并重&#xff1a; 数据集成与标准化‌&#xff1a;构建统一的数据采集与处理标准&#xff0c;实现多源水务数据的无缝集成与高效管理&#xff0c;为精准决策提供坚实的数据…

逆向工程核心原理 Chapter24 | DLL卸载

DLL卸载技术的学习。 DLL卸载原理 DLL注入&#xff08;Injection&#xff09;是将DLL强制加载进进程的技术。 DLL卸载&#xff08;Ejection&#xff09;则是将强制插入进程的DLL弹出的技术。 两者的原理都十分类似&#xff0c;都用CreateRemoteThread来实现&#xff1a; I…

拼图软件推荐哪个好?日常拼图用这5个就够了

夏日悠长&#xff0c;暑假悄然过去&#xff0c;那些阳光灿烂的日子&#xff0c;是不是已经装满了你的相机和手机&#xff1f; 现在&#xff0c;是时候把这些珍贵的记忆碎片&#xff0c;用创意的拼图方式&#xff0c;编织成一本独一无二的暑假相册了&#xff01; 那么&#xf…

聚鼎装饰画:怎么做好一家装饰画店铺

在当今这个讲究美学和个性化的时代&#xff0c;拥有一家装饰画店铺无疑蕴含着巨大的潜力。然而&#xff0c;要想在这个竞争激烈的市场中崭露头角&#xff0c;不仅需要对艺术有着深厚的理解&#xff0c;还需要具备一定的商业头脑。本文将探讨几个关键的策略&#xff0c;帮助装饰…

行业首家!百度智能云通过中国信通院「H5 端人脸识别安全能力」测评

2024 年 6 月&#xff0c;在中国信通院组织的 H5 端人脸识别产品安全能力评测中&#xff0c;百度智能云「H5 实时活体检测产品-V3.0」在人脸识别算法安全能力、人脸数据传输安全能力、H5 端应用安全能力、身份认证业务安全能力、安全管理能力 5 个方面表现优异&#xff0c;相应…

NameNode 的 Web 界面

http://127.0.0.1:50070/ 图片显示的是Hadoop的Web界面导航栏。导航栏包含以下选项&#xff1a; Hadoop&#xff1a;Hadoop的主页。Overview&#xff1a;集群的概览信息。Datanodes&#xff1a;数据节点的状态和信息。Datanode Volume Failures&#xff1a;数据节点的卷故障信…

SAP B1 三大基本表单标准功能介绍-物料主数据(下)

背景 在 SAP B1 中&#xff0c;科目表、业务伙伴主数据、物料主数据被称为三大基本表单&#xff0c;其中的标准功能是实施项目的基础。本系列文章将逐一介绍三大基本表单各个字段的含义、须填内容、功能等内容。 附上 SAP B1 10.0 的帮助文档&#xff1a;SAP Business One 10…