[蓝桥杯][2019年第十届真题]-----外卖店优先级
题目描述:
“饱了么”外卖系统中维护着 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,其他没有的就减一,增加到5时,优先缓存区数目加一,当某一时间点没有订单,且优先级为4,说明减一就小于等于3,这时,退出优先缓冲区。看似没问题,但忽略了一点:在一个时刻可能同时多家店有订单。然后又加了一层循环直接超时。
因此换了一种思路:
------用一个数组 f 标记当前外卖店是否有订单,再用一个数组 v 标记该店之前是否加入过优先级,开一个二维数组存储 i 时刻 j 外卖店是否有订单,这里某时刻订单数不确定,直接用vector数组。
------首先遍历每个时间点,然后在每个时间点遍历当前时间点的订单,有订单优先级就加2,同时数组 f 标记为1,代表当前时间点有订单;
------再去遍历1-n的外卖店,如果优先级不为0且 f 数组未标记,优先级就减1;如果优先级大于5且未加入过优先缓冲区,优先数目加1,同时数组v标记为1,;如果优先级小于等于3且加入过优先缓冲区,优先数目减1,同时数组v标记为0。
代码:
#include <iostream>
using namespace std;
#include <vector>
#include <cstring>
int ans[100005];
int f[100005];//当前店是否有订单
int v[100005];//之前是否加入过优先级
vector<int> a[100005];int main()
{int n,m,t,ts,id;cin>>n>>m>>t;for(int i=0;i<m;i++){cin>>ts>>id;a[ts].push_back(id);//ts时刻id号店有订单 }int cnt=0;for(int i=1;i<=t;i++)//遍历每个时间点{memset(f,0,sizeof(f));for(int j=0;j<a[i].size();j++){ans[a[i][j]]+=2;f[a[i][j]]=1;}for(int j=1;j<=n;j++){if(f[j]!=1&&ans[j]!=0) ans[j]--;if(ans[j]>5&&!v[j])//当前点的优先级大于5且之前没有加入过缓冲 {cnt++;v[j]=1;}if(ans[j]<=3&&v[j])//当前点的优先级小于等于3且之前加入过缓冲{v[j]=0;cnt--;}} } cout<<cnt<<endl;return 0;
}
[蓝桥杯][2019年第十届真题]-----外卖店优先级相关推荐
- [蓝桥杯][2019年第十届真题]外卖店优先级(模拟)
题目描述 "饱了么"外卖系统中维护着 N 家外卖店,编号 1 ∼ N.每家外卖店都有 一个优先级,初始时 (0 时刻) 优先级都为 0. 每经过 1 个时间单位,如果外卖店没有订单 ...
- [蓝桥杯][2019年第十届真题]外卖店优先级、修改数组、糖果、特别数的和、等差数列
个人题解链接,历届试题,正在更新中~ 文章目录 外卖店优先级 修改数组 糖果 特别数的和 等差数列 外卖店优先级 题目描述 "饱了么"外卖系统中维护着 N 家外卖店,编号 1 ∼ ...
- [蓝桥杯][2019年第十届真题]扫地机器人(二分+贪心)
题目描述 小明公司的办公区有一条长长的走廊,由 N 个方格区域组成,如下图所 示. 走廊内部署了 K 台扫地机器人,其中第 i 台在第 Ai 个方格区域中. 已知扫地机器人每分钟可以移动到左右相邻的方 ...
- [蓝桥杯][2019年第十届真题]糖果(状压dp)
题目描述 糖果店的老板一共有 M 种口味的糖果出售.为了方便描述,我们将 M 种 口味编号 1 ∼ M. 小明希望能品尝到所有口味的糖果.遗憾的是老板并不单独出售糖果,而 是 K 颗一包整包出售. 幸 ...
- [蓝桥杯][2019年第十届真题]修改数组(并查集)
题目描述 给定一个长度为 N 的数组 A = [A1, A2, · · · AN ],数组中有可能有重复出现 的整数. 现在小明要按以下方法将其修改为没有重复整数的数组.小明会依次修改 A2,A3,· ...
- [蓝桥杯][2019年第十届真题]等差数列
题目描述 数学老师给小明出了一道等差数列求和的题目.但是粗心的小明忘记了一 部分的数列,只记得其中 N 个整数. 现在给出这 N 个整数,小明想知道包含这 N 个整数的最短的等差数列有 几项? 输入 ...
- [蓝桥杯][2019年第十届真题]后缀表达式(正解!!)
题目描述 给定 N 个加号.M 个减号以及 N + M + 1 个整数 A1, A2, · · · , AN+M+1,小 明想知道在所有由这 N 个加号.M 个减号以及 N + M + 1 个整数凑出 ...
- [蓝桥杯][2019年第十届真题c/c++B组]迷宫(寻找路径bfs及文件输入输出)
试题 E: 迷宫 1.问题描述 2.思路详解 3.AC代码 1.问题描述 下图给出了一个迷宫的平面图,其中标记为 1 的为障碍,标记为 0 的为可以通行的地方. 010000 000100 00100 ...
- [蓝桥杯][2019年第十届真题c/c++B组]后缀表达式(解释sum -= 2*a[i])
后缀表达式 给定 N 个加号.M 个减号以及 N + M + 1个整数 A1 , A2 , · · · , AN+M+1 ,小明想知道在所有由这 N 个加号.M 个减号以及 N + M + 1个整数凑 ...
最新文章
- 系统架构设计的原则和模式
- HDLBits 系列(12)All about Karnaugh Map
- linux常用文本编辑器nano/vi/vim
- JS原型继承和类式继承
- 7z apache解析漏洞_解析漏洞(Web漏洞及防御)
- Cannot resolve field [content], input field list:[contents].
- RxJS CombineLatest operator 的一个具体使用例子
- 盘点:最值得托付终身的星座
- mysql8.0主从配置,MySQL 8.0主从服务器(Master-Slave)配置
- 计算机f8键的功能,详解:XP系统修改启动时F8键有哪些功能?
- xlc mysql_mysql – 用于存储产品信息的noSQL?
- PAIP.DW 各个版本的差别大比较。
- MYSQL登录和常见命令
- Android cpu降频工具,安卓手机CPU调频/调压工具_手机CPU管理 V16.6.9 安卓版
- vulnhub Pwned: 1
- STM32:使用外部中断控制对射式红外传感器并计次
- 测设面试题笔试题总结
- 防水蓝牙耳机哪个好?防水音质好的蓝牙耳机推荐
- 首个可用于深度学习的ToF相关数据集!基于置信度的立体相机以及ToF相机深度图融合框架...
- Tcl列表元素查找命令lsearch