【AcWing】学了一坤时才明白的一道题

news/2024/11/18 3:38:08/

🎆音乐分享 (点击链接可以听哦)

The Right Path - Thomas Greenberg
 



 

这道题小吉花了一坤时才弄明白,虽然花的时间有点长

但是至少是明白了

😎😎😎😎😎😎 

1241. 外卖店优先级 - AcWing题库 

 

这道题如果纯纯用暴力,也不是不能做,毕竟是蓝桥杯的题,还是可以拿到分的,但是拿不全

下面就是优化版本

⭐⭐⭐

注意用sort为pair排序时,先比较  .first,再比较  .second,

变化位置时,  .first  .second 一起变化

具体可以参考下面的代码

⭐⭐⭐

代码的总体思路就是先排序,把 ts 相同的放在一起 

#include <iostream>
#include <algorithm>#define x first
#define y secondusing namespace std;typedef pair<int, int> PII;const int N = 100010;int n, m, T;
int score[N];//优先级
int last[N];//店铺i上一次有订单的时间 
bool st[N];//是否加入到优先缓存中PII order[N];int main()
{scanf("%d%d%d", &n, &m, &T);for (int i = 0; i < m; i ++ ) scanf("%d%d", &order[i].x, &order[i].y);// ts idsort(order, order + m);for (int i = 0; i < m;){int j = i;while (j < m && order[j] == order[i]) j ++ ;//代表order[].x order[].y都对应相等int t = order[i].x, id = order[i].y, cnt = j - i;i = j;score[id] -= t - last[id] - 1;//时间差,具体看下面的解释if (score[id] < 0) score[id] = 0;if (score[id] <= 3) st[id] = false; // 以上处理的是t时刻之前的信息score[id] += cnt * 2;if (score[id] > 5) st[id] = true;last[id] = t;//存下数  别忘记了}for (int i = 1; i <= n; i ++ )//处理最后一个if (last[i] < T){score[i] -= T - last[i];if (score[i] <= 3) st[i] = false;}int res = 0;for (int i = 1; i <= n; i ++ ) res += st[i];printf("%d\n", res);return 0;
}

 🍔 score[id] - = t - last[id] - 1

t 代表当前时间,last[id]代表 t 前一个的时间,因为要算出整块的时间,这样方便改变优先值

因为已经跳出while循环了,所以这一部分是没有接到订单的,所以是score[] -  

为什么要 -1

比如 t = 5,last[id] = 2,那么就是 3,4两个数(5-2-1

🍔最后一个订单怎么处理

 Code over!


http://www.ppmy.cn/news/31492.html

相关文章

数据分析:基于K-近邻(KNN)对Pima人糖尿病预测分析

数据分析&#xff1a;基于K-近邻(KNN)对Pima人糖尿病预测分析 作者&#xff1a;AOAIYI 作者简介&#xff1a;Python领域新星作者、多项比赛获奖者&#xff1a;AOAIYI首页 &#x1f60a;&#x1f60a;&#x1f60a;如果觉得文章不错或能帮助到你学习&#xff0c;可以点赞&#x…

zxing 生成图片 带logo 正方形 圆形 兼容

ZxingImageUtils 工具类 import com.google.zxing.common.BitMatrix;import javax.imageio.ImageIO; import java.awt.*; import java.awt.geom.Ellipse2D; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import java.io.OutputStre…

[深入理解SSD系列综述 闪存实战2.1.2] SLC、MLC、TLC、QLC、PLC NAND_固态硬盘闪存颗粒类型

闪存最小物理单位是 Cell, 一个Cell 是一个晶体管。 闪存是通过晶体管储存电子来表示信息的。在晶体管上加入了浮动栅贮存电子。数据是0或1取决于在硅底板上形成的浮动栅中是否有电子。有电子为0,无电子为1. SSD 根据闪存颗粒区分,固态硬盘有SLC、MLC、TLC、QLC、PLC 五种类型…

微小目标识别研究(2)——基于K近邻的白酒杂质检测算法实现

文章目录实现思路配置opencv位置剪裁实现代码自适应中值滤波实现代码动态范围增强实现代码形态学处理实现代码图片预处理效果计算帧差连续帧帧差法原理和实现代码实现代码K近邻实现基本介绍实现代码这部分是手动实现的&#xff0c;并没有直接调用相关的库完整的代码——调用ope…

Oracle OCP 19c 考试(1Z0-083)中关于Oracle不完全恢复的考点(文末附录像)

欢迎试看博主的专著《MySQL 8.0运维与优化》 下面是Oracle 19c OCP考试&#xff08;1Z0-083&#xff09;中关于Oracle不完全恢复的题目: A database is configured in ARCHIVELOG mode A full RMAN backup exists but no control file backup to trace has been taken A media…

虚拟化介绍

1、为什么需要虚拟化 据调查传统的服务器在很多时候处于休眠状态&#xff0c;大概只有5%时间是在工作&#xff0c;工作效率低下&#xff0c;浪费资源&#xff0c;因此需要一种手段来提高计算机资源的利用率。 虚拟化前 每台主机一个操作系统 在同一台主机运行多个应用程序&am…

Shell脚本编码字符串截取,从指定位置开始截取和从指定字符(子字符串)开始截取

从指定位置开始截取这种方式需要两个参数&#xff1a;除了指定起始位置&#xff0c;还需要截取长度&#xff0c;才能最终确定要截取的字符串。既然需要指定起始位置&#xff0c;那么就涉及到计数方向的问题&#xff0c;到底是从字符串左边开始计数&#xff0c;还是从字符串右边…

【JavaScript运行原理之V8引擎】V8引擎解析JavaScript代码原理

1. 编程语言的执行 高级语言最终都需要编译为低级语言才能被硬件执行&#xff0c;越高级的语言中间的转换时间越长&#xff0c;效率越低&#xff0c;越低级的语言执行素的越快&#xff0c;但是由于缺少高级语言便捷的语法特性所以很难编写代码。 2. 大杂烩JS 它是作者在1995…