【CSP试题回顾】202203-2-出行计划

CSP-202203-2-出行计划

关键点:前缀和数组(高频考点)

详见:【CSP考点回顾】前缀和数组

解题思路

解法利用差分数组技巧,使得更新时间区间的操作和查询操作的时间复杂度都是 O(1),整体算法的时间复杂度主要由遍历出行计划和查询决定,即 O(n + m)。

  1. 初始化一个数组 diffArr 用于记录时间点的变化,这个数组的大小设定为能包含所有可能的时间点(根据问题限制,时间点不会超过 200,005)。

  2. 遍历所有 n 个出行计划,对于每个计划,计算出它有效的时间区间 [x, y],即从 ti - k - ci + 1 到 ti - k。如果计算出的 y < 1,则忽略该出行计划,因为它不可能在任何查询时间内有效。

  3. (重点) 使用差分数组的技巧来处理时间区间的更新。如果一个出行计划在时间区间 [x, y] 内有效,那么在 diffArr 数组中,位置 x 的值增加 1(表示从时间 x 开始,出行计划数增加),而位置 y+1 的值减少 1(表示从时间 y+1 开始,出行计划数减少)。这是因为在差分数组中,一个区间的开始位置加 1,结束位置的下一个减 1,可以用来反映这一区间内的数量变化。

  4. 在更新完所有出行计划后,遍历 diffArr 数组计算其前缀和,这将转换 diffArr 数组成为一个在每个时间点具体有多少出行计划活跃的数组。

  5. 对于每个查询时间 q,直接输出 diffArr[q] 的值,这就是在时间点 q 活跃的出行计划总数。

完整代码

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

int n, m, k, ti, ci, q, diffArr[200005];

int main() {
	cin >> n >> m >> k;

	for (int i = 0; i < n; i++)
	{
		cin >> ti >> ci;
		int x = ti - k - ci + 1, y = ti - k; // 符合条件的时间区间 [x, y]

		if (y < 1) continue; // y < 1直接跳过(肯定没有任何一个出行符合条件)
		else
		{
			x = max(1, x); // x至少为1(规定从1开始)
			diffArr[y + 1]--, diffArr[x]++; // 在x处加1,y+1处减1,用差分数组记录每个时间点的变化			
		}
	}

	for (int i = 1; i < 200005; i++)
	{
		diffArr[i] += diffArr[i - 1]; // 差分数组计算前缀和
	}

	for (int i = 0; i < m; i++) // 处理查询
	{
		cin >> q;
		cout << diffArr[q] << endl; // 满足条件的出行计划总数
	}

	return 0;
}

请添加图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

2024年最全洗地机选购攻略盘点丨希亦、小米、云鲸、海尔洗地机哪款值得入手?

在现代家居清洁中&#xff0c;洗地机是不可或缺的得力助手&#xff0c;它融合了吸尘、拖地等多种功能。面对市场上琳琅满目的洗地机品牌和型号&#xff0c;选择一个可靠的品牌至关重要。优质的品牌能够提供高品质的产品&#xff0c;使您的清洁工作更加轻松高效。本文将向您推荐…

基于多时间尺度的植被干旱响应特征与机制分析

随着全球气候变暖的趋势愈发明显&#xff0c;干旱事件不仅发生的频率增加&#xff0c;其持续时间和影响范围也在不断扩大。干旱对生态环境造成了严重破坏&#xff0c;导致生物多样性减少、土地退化和水资源短缺&#xff1b;对农业生产而言&#xff0c;干旱会导致作物减产甚至绝…

回溯算法04-组合总数(Java)

4.组合总数 题目描述 给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target &#xff0c;找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 &#xff0c;并以列表形式返回。你可以按 任意顺序 返回这些组合。 candidates 中的 同一个 数字可以…

一张图串起来springcloud alibaba以及其他组件的作用,欢迎各位巨佬指正

一般来说&#xff0c;用一个gateway或者一个nginx应该够用&#xff0c;但是加上去好像也无妨 针对秒杀场景&#xff0c;有几种常见的解决方案&#xff1a; 基于Redis的缓存方案&#xff1a; 预热缓存&#xff1a;在秒杀开始前&#xff0c;将商品库存等信息提前加载到Redis缓存…

OSI七层模型/TCP四层模型

协议&#xff1a; 协议是双方共同指定的一组规则&#xff0c;在网络通信中表示通信双方传递数据和解释数据的一组规则。 从A上传文件到服务器B,需要在A和B之间制定一个双方都认可的规则&#xff0c;这个规则就叫文件传输协议&#xff0c;该协议是ftp协议的一个初级版本&#…

PySide6+VSCode Python可视化环境搭建

pip install pyside6 下载本期源码 vscode装一个PYQT Integration插件&#xff0c;设置好两个路径&#xff08;下面有个脚本用于获取路径&#xff09; 用everything的童鞋注意了&#xff1a;工具/选项/索引/强制重建 重启vscode可以看到&#xff0c;右击.ui文件时出现可以操作…

01-环境搭建、SpringCloud微服务(注册发现、服务调用、网关)

环境搭建、SpringCloud微服务(注册发现、服务调用、网关) 1)课程对比 2)项目概述 2.1)能让你收获什么 2.2)项目课程大纲 2.3)项目概述 随着智能手机的普及&#xff0c;人们更加习惯于通过手机来看新闻。由于生活节奏的加快&#xff0c;很多人只能利用碎片时间来获取信息&…

map和set(一)——关联式容器的常用接口使用及区别

一、关联式容器 在初阶阶段&#xff0c;我们已经接触过STL中的部分容器&#xff0c;比如&#xff1a;vector、list、deque、forward_list(C11)等&#xff0c;这些容器统称为序列式容器&#xff0c;因为其底层为线性序列的数据结构&#xff0c;里面 、存储的是元素本身。 那什么…

django学习记录07——订单案例(复选框+ajax请求)

1.订单的数据表 1.1 数据表结构 1.2 数据表的创建 models.py class Order(models.Model):"""订单号"""oid models.CharField(max_length64, verbose_name"订单号")title models.CharField(max_length64, verbose_name"名称&…

Android6.0-14的兼容性

1.Android 6.0 ①新增运行时权限&#xff0c;危险权限需要动态申请 ②删除了对 Apache HTTP 客户端的支持&#xff0c; 解决方法&#xff1a;必须在build.gradle文件中声明以下编译时依赖项 android { useLibrary org.apache.http.legacy } 2.Android 8.0 ①允许安装未知来源…

15 实战:Kaggle房价预测 + 课程竞赛:加州2020年房价预测【李沐动手学深度学习课程笔记】

15 实战&#xff1a;Kaggle房价预测 课程竞赛&#xff1a;加州2020年房价预测【李沐动手学深度学习课程笔记】https://zhuanlan.zhihu.com/p/685343754 写在前面&#xff1a;这里格式很乱&#xff0c;代码直接去知乎copy 1 实战Kaggle比赛&#xff1a;预测房价 1.1 实现几个函…

C#实现选择排序算法

以下是使用C#实现选择排序算法的示例代码&#xff1a; using System;class SelectionSort {static void Main(string[] args){int[] arr { 64, 25, 12, 22, 11 };Console.WriteLine("排序前&#xff1a;");PrintArray(arr);SelectionSortAlgorithm(arr);Console.Wr…

STM32CubeMX学习笔记12 ---低功耗模式

在实际使用中很多产品都需要考虑低功耗的问题&#xff0c;STM32F10X提供了三种低功耗模式&#xff1a;睡眠模式&#xff08;Sleep mode&#xff09;、停机模式&#xff08;Stop mode&#xff09;和待机模式&#xff08;Standby mode&#xff09;。这些低功耗模式可以有效减少系…

【AI视野·今日NLP 自然语言处理论文速览 第八十三期】Wed, 6 Mar 2024

AI视野今日CS.NLP 自然语言处理论文速览 Wed, 6 Mar 2024 Totally 74 papers &#x1f449;上期速览✈更多精彩请移步主页 Daily Computation and Language Papers MAGID: An Automated Pipeline for Generating Synthetic Multi-modal Datasets Authors Hossein Aboutalebi, …

Vue-04

Vue 指令 指令补充 指令修饰符&#xff1a;通过"."指明一些指令后缀&#xff0c;不同后缀封装了不同的处理操作 → 简化代码 按键修饰符 keyup.enter → 键盘回车监听 在input中使用keyup.enter&#xff0c;这个时候按enter键也能实现添加&#xff0c;和点击按钮实…

Redis的散列插槽及故障转移

散列插槽 散列插槽原理类似于一个哈希散列表&#xff0c;通过哈希算法来映射插槽&#xff0c;并为redis节点分配插槽区间&#xff0c;插槽的所有范围是0~16383 数据key不是与节点绑定&#xff0c;而是与插槽绑定。redis会根据key的有效部分计算插槽值&#xff0c;分两种情况&a…

第十三届蓝桥杯大赛软件赛省赛C/C++ 大学 B 组 统计子矩阵

#include<iostream> #include<algorithm> #include<cstring> #include<string> #include<vector> #include<queue>using namespace std;int cnt,temp; int n,m,K; int a[505][505]; int pre[505][505];//二维前缀和void sol() {cin>>…

【Linux】gcc升级13.2.0

错误信息 g: error: unrecognized command line option ‘-stdgnu14’ -stdc14需要g5.2以上&#xff0c;而centos默认的g只有4.8.5&#xff0c;所以&#xff0c;要做的事情&#xff0c;是升级g 下载gcc 官网下载: https://ftp.gnu.org/gnu/gcc/wget https://ftp.gnu.org/gnu/…

liunx自动构建化工具make/makefile

liunx自动化构建工具 依赖关系和依赖方法makefile 文件格式 第一个项目 进度条牛刀小试 倒计时简单模版 makefile 的多文件编程 依赖关系和依赖方法 依赖关系&#xff1a;依赖关系是文件之间的关系。 依赖方法&#xff1a;依赖方法是文件之间相互作用的方法。通过方法产生关系…

java网络编程 02 socket

01.socket定义 02.TCP编程 import java.io.IOException; import java.io.OutputStream; import java.net.InetAddress; import java.net.Socket;public class clientSocket {public static void main(String[] args) throws IOException {Socket socket new Socket(Inet…