P8685 [蓝桥杯 2019 省 A] 外卖店优先级

题目描述

“饱了么”外卖系统中维护着 N 家外卖店,编号 1 ∼ N。每家外卖店都有一个优先级,初始时 (0 时刻)优先级都为 0。

每经过 1 个时间单位,如果外卖店没有订单,则优先级会减少 1,最低减到 0;而如果外卖店有订单,则优先级不减反加,每有一单优先级加 2。

如果某家外卖店某时刻优先级大于 5,则会被系统加入优先缓存中;如果优先级小于等于 3,则会被清除出优先缓存。

给定 T 时刻以内的 M 条订单信息,请你计算 T 时刻时有多少外卖店在优先缓存中。

输入格式

第一行包含 3 个整数 N 、 M 和 T。

以下 M 行每行包含两个整数 ts 和 id,表示 ts 时刻编号 id 的外卖店收到。

一个订单。

输出格式

输出一个整数代表答案。

输入输出样例

输入 #1

2 6 6
1 1
5 2
3 1
6 2
2 1
6 2

输出 #1

1

说明/提示

样例解释

6 时刻时,1 号店优先级降到 3,被移除出优先缓存;2 号店优先级升到 66,

加入优先缓存。所以是有 1 家店 (2 号)在优先缓存中。

评测用例规模与约定

对于80% 的评测用例,1≤N,M,T≤10000。

对于所有评测用例,1≤N,M,T≤105,1≤ts≤T,1≤id≤N。

首先,对于每一家店,我们考虑到需要从时间 1 开始,一直遍历到时间 T,如果有记录,那么 优先级 加上 2,否则,优先级 减去 1,对于每一个节点,判断这家店 是否在优先推荐中,那么此时,由于我们把有记录和没有记录的时间点都遍历了一遍,自然浪费时间,所以,我们可以只 查找这家店有记录的时间点,没有用的点,我们用减法就能求出

值得注意的点是,优先级的加减应该放的位置。由于我们是对没有记录的点使用了减法,代表他在这个时间点之前每一个时间点都减了一。所以在这期间他就有可能被移出优先缓存中,所以在我们减完之后立马就要判断它是否被移除了优先缓存。

#include<bits/stdc++.h>
using namespace std;
#define int long longpair<int,int> a[100005];
int Time[100005] = { 0 };//表示某一个店上一次收到外卖订单的时间点
int cnt[100005] = { 0 };//积分
bool is_priority[100005] = { false };signed main()
{int n, m, t;cin >> n >> m >> t;for (int i = 0;i < m;i++){cin >> a[i].first >> a[i].second;//时间与id}sort(a, a + m);for (int i = 0;i < m;i++){int id = a[i].second, ts = a[i].first;if (Time[id] != ts)cnt[id] -= ts - Time[id] - 1;Time[id] = ts;if (cnt[id] < 0)cnt[id] = 0;if (cnt[id] <= 3 && is_priority[id])is_priority[id] = false;cnt[id] += 2;if (cnt[id] > 5)is_priority[id] = true;}for (int i = 1;i <= n;i++)//结束时还要再结算一次点数{cnt[i] -= t - Time[i];if (cnt[i] < 0)cnt[i] = 0;if (cnt[i] <= 3 && is_priority[i])is_priority[i] = false;}int ans = 0;for (int i = 1;i <= n;i++){if (is_priority[i])ans++;}cout << ans;return 0;
}

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

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

相关文章

视频号小店如何找达人,对接达人教程分享,你还在等什么?

大家好&#xff0c;我是电商花花。 视频号现在的流量非常大&#xff0c;尤其是达人的流量&#xff0c;自从视频号引入大量的博主和达人之后&#xff0c;达人带货的流量更是突飞猛进。 如果你想要在视频号小店出单&#xff0c;爆单&#xff0c;那必须要找达人带货&#xff0c;…

一文读懂:到底什么是重删和压缩?

在数字化时代&#xff0c;数据已经成为企业和个人生活中不可或缺的一部分。然而&#xff0c;数据的快速增长也带来了存储空间的需求压力。为了更有效地利用存储空间&#xff0c;重删和压缩这两种技术应运而生&#xff0c;它们被广泛应用在主存、闪存、备份软件和数据传输软件中…

经典面试题数组常用方法都有哪些

1.数组常用方法之 push&#xff08;&#xff09;&#xff08;改变原数组&#xff0c;产生新数组&#xff09; push 是用来在数组的末尾追加一个元素,返回添加以后的长度 var arr [1, 2, 3] ​ // 使用 push 方法追加一个元素在末尾 arr.push(4) ​ console.log(arr) // [1, 2,…

实现 jwt 鉴权- SpringBoot + 微服务

目录 项目结构 主要步骤 auth-service里&#xff1a; 1. 配置 pom.xml 依赖 2. 实现HandlerInterceptor 接口的 preHandle 函数 3. 实现 WebMvcConfigurer 的 addInterceptors 接口 4. 生成 token 和验证 token 5. 登录接口示例 user-service 里&#xff1a; 6. 实现拦…

Python-VBA函数之旅-ascii函数

ascii函数在Python中主要用于将对象(特别是字符和字符串)转换为它们的ASCII表示形式。这种转换在处理文本数据、调试代码以及确保文本以 ASCII 格式存储或传输时非常有用。常见应用场景有&#xff1a; 1、调试和文本处理&#xff1a;当处理包含非ASCII字符(如Unicode字符)的文…

从概念到实践:揭开枚举与联合体在数字化创新时代的神秘面纱

欢迎来到白刘的领域 Miracle_86.-CSDN博客 系列专栏 C语言知识 先赞后看&#xff0c;已成习惯 创作不易&#xff0c;多多支持&#xff01; 在编程的世界中&#xff0c;枚举和联合体是两种非常基础且重要的数据结构。它们各自具有独特的特点和用途&#xff0c;为程序员提供…

S参数介绍:双端口和四端口S参数有哪些

信号在传输过程中&#xff0c;并非完全不变&#xff0c;而是存在一定的损耗和变化。这类似于光的折射现象&#xff0c;在信号传输过程中&#xff0c;一部分信号会在输入端被反射回来&#xff0c;一部分信号会被传输到其它端口&#xff0c;还有一部分信号会在传输过程中被耗散。…

ROS机器人未知环境自主探索功能包explore_lite最全源码详细解析(三)

本系列文章主要针对ROS机器人常使用的未知环境自主探索功能包explore_lite展开全源码的详细解析&#xff0c;并进行概括总结。 本系列文章共包含六篇文章&#xff0c;前五篇文章主要介绍explore_lite功能包中 explore.cpp、costmap_tools.h、frontier_search.cpp、costmap_clie…

Linux输出输入重定向

输出重定向 # echo 是打印内容 输出重定向&#xff0c;将123写进1.txt文件中 [rootlocalhost ~]# echo 123 > 1.txt # 将services文件的前5行写进1.txt中 [rootlocalhost ~]# head -5 services > 1.txt注意&#xff1a;输出重定向会先清空文件的内容&#xff0c;再进行写…

C语言-函数指针-快速排序算法(书籍示例-入门)

概述 使用C语言&#xff0c;实现结构体多元素&#xff0c;排序算法&#xff08;冒泡排序&#xff09;&#xff0c;这里使用示例&#xff1a;书籍示例讲解 函数简介 函数声明 void qsort(void *base, size_t nitems, size_t size, int (*compar)(const void *, const void*)) 参…

初识23种设计模式:分类、原理与实际应用

目录 1. 简介2. 设计模式的分类概述3. 设计模式详解3.1 创建型模式&#xff08;共5种&#xff09;3.1.1 单例模式&#xff08;Singleton&#xff09;3.1.2 工厂方法模式&#xff08;Factory Method&#xff09;3.1.3 抽象工厂模式&#xff08;Abstract Factory&#xff09;3.1.…

oracle 中的大页无法使用问题

oracle 中的大页问题 今天巡检数据库的时候&#xff0c;发现有一个备库节点上的负载很大。这个备库基本无人使用。仅做延时查询使用&#xff0c;按理来说不应该有这么大负载&#xff0c; 环境说明 11.2.0.4 单节点dg库。 问题 大页不生效。且数据库所在服务器负载极大 top…

高并发环境下的实现与优化策略

在现代互联网应用中&#xff0c;高并发处理能力是衡量系统性能和稳定性的关键指标之一。尤其对于电商、社交、在线支付等业务场景&#xff0c;面对瞬间涌入的大规模用户请求&#xff0c;如何保证系统的稳定性和响应速度&#xff0c;对技术架构设计与优化提出了极高要求。本文将…

【Linux】Supervisor 基础

要在Linux上启动Supervisor&#xff0c;你可以按照以下步骤进行操作&#xff1a; 确保你已经安装了Supervisor。使用适合你的Linux发行版的包管理器进行安装。例如&#xff0c;对于Ubuntu&#xff0c;可以运行以下命令安装Supervisor&#xff1a; sudo apt-get update sudo apt…

在Java应用程序中嵌入百度地图的实现方法

在许多应用程序中&#xff0c;展示地图是一个常见的需求&#xff0c;特别是对于需要展示位置信息或者导航功能的应用。百度地图是一种常用的地图服务&#xff0c;本文将介绍如何在Java应用程序中嵌入百度地图&#xff0c;并提供一个简单易懂的示例代码。 1. 准备工作 在开始之…

Leetcode:283.移动零

题目要求 给定一个数组 nums&#xff0c;编写一个函数将所有 0 移动到数组的末尾&#xff0c;同时保持非零元素的相对顺序。 请注意 &#xff0c;必须在不复制数组的情况下原地对数组进行操作。 示例 1: 输入: nums [0,1,0,3,12] 输出: [1,3,12,0,0] 示例 2: 输入: nums [0…

OAuth2.0客户端和服务端Java实现

oauth2 引言 读了《设计模式之美》和《凤凰架构》架构安全篇之后&#xff0c;决定写一个OAuth2.0的认证流程的Demo&#xff0c;也算是一个阶段性的总结&#xff0c;具体原理实现见《凤凰架构》(架构安全设计篇)。 涉及到的源码可以从https://github.com/WeiXiao-Hyy/oauth2获…

Digicert 证书

一、简介 在当今数字化时代&#xff0c;网络安全已成为全球关注的焦点。随着网络攻击和数据泄露事件的频发&#xff0c;企业和组织越来越重视保护自己的网络环境。在这种背景下&#xff0c;数字证书成为了确保网络通信安全的关键工具。作为数字证书行业的领导者&#xff0c;Di…

2024.4.9记——C++多线程系列文章(五)之死锁

引言 如果用单一的全局互斥保护所有共享数据&#xff0c;也即锁的粒度过大&#xff0c;例如在共享大量数据的系统中&#xff0c;这么做会消除并发带来的任何性能优势&#xff0c;原因是多线程系统由此受到强制限定&#xff0c;任意时刻都只准许运行其中一个线程&#xff0c;即…

python应援灯牌代码

代码如下 import pygame import sys import random# 初始化Pygame pygame.init()# 设置窗口尺寸 WINDOW_WIDTH 800 WINDOW_HEIGHT 600 window_surface pygame.display.set_mode((WINDOW_WIDTH, WINDOW_HEIGHT)) pygame.display.set_caption(应援语跑马灯模拟)# 定义颜色 WH…