题目描述:

“饱了么”外卖系统中维护着 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年第十届真题]-----外卖店优先级相关推荐

  1. [蓝桥杯][2019年第十届真题]外卖店优先级(模拟)

    题目描述 "饱了么"外卖系统中维护着 N 家外卖店,编号 1 ∼ N.每家外卖店都有 一个优先级,初始时 (0 时刻) 优先级都为 0. 每经过 1 个时间单位,如果外卖店没有订单 ...

  2. [蓝桥杯][2019年第十届真题]外卖店优先级、修改数组、糖果、特别数的和、等差数列

    个人题解链接,历届试题,正在更新中~ 文章目录 外卖店优先级 修改数组 糖果 特别数的和 等差数列 外卖店优先级 题目描述 "饱了么"外卖系统中维护着 N 家外卖店,编号 1 ∼ ...

  3. [蓝桥杯][2019年第十届真题]扫地机器人(二分+贪心)

    题目描述 小明公司的办公区有一条长长的走廊,由 N 个方格区域组成,如下图所 示. 走廊内部署了 K 台扫地机器人,其中第 i 台在第 Ai 个方格区域中. 已知扫地机器人每分钟可以移动到左右相邻的方 ...

  4. [蓝桥杯][2019年第十届真题]糖果(状压dp)

    题目描述 糖果店的老板一共有 M 种口味的糖果出售.为了方便描述,我们将 M 种 口味编号 1 ∼ M. 小明希望能品尝到所有口味的糖果.遗憾的是老板并不单独出售糖果,而 是 K 颗一包整包出售. 幸 ...

  5. [蓝桥杯][2019年第十届真题]修改数组(并查集)

    题目描述 给定一个长度为 N 的数组 A = [A1, A2, · · · AN ],数组中有可能有重复出现 的整数. 现在小明要按以下方法将其修改为没有重复整数的数组.小明会依次修改 A2,A3,· ...

  6. [蓝桥杯][2019年第十届真题]等差数列

    题目描述 数学老师给小明出了一道等差数列求和的题目.但是粗心的小明忘记了一 部分的数列,只记得其中 N 个整数. 现在给出这 N 个整数,小明想知道包含这 N 个整数的最短的等差数列有 几项? 输入 ...

  7. [蓝桥杯][2019年第十届真题]后缀表达式(正解!!)

    题目描述 给定 N 个加号.M 个减号以及 N + M + 1 个整数 A1, A2, · · · , AN+M+1,小 明想知道在所有由这 N 个加号.M 个减号以及 N + M + 1 个整数凑出 ...

  8. [蓝桥杯][2019年第十届真题c/c++B组]迷宫(寻找路径bfs及文件输入输出)

    试题 E: 迷宫 1.问题描述 2.思路详解 3.AC代码 1.问题描述 下图给出了一个迷宫的平面图,其中标记为 1 的为障碍,标记为 0 的为可以通行的地方. 010000 000100 00100 ...

  9. [蓝桥杯][2019年第十届真题c/c++B组]后缀表达式(解释sum -= 2*a[i])

    后缀表达式 给定 N 个加号.M 个减号以及 N + M + 1个整数 A1 , A2 , · · · , AN+M+1 ,小明想知道在所有由这 N 个加号.M 个减号以及 N + M + 1个整数凑 ...

最新文章

  1. 系统架构设计的原则和模式
  2. HDLBits 系列(12)All about Karnaugh Map
  3. linux常用文本编辑器nano/vi/vim
  4. JS原型继承和类式继承
  5. 7z apache解析漏洞_解析漏洞(Web漏洞及防御)
  6. Cannot resolve field [content], input field list:[contents].
  7. RxJS CombineLatest operator 的一个具体使用例子
  8. 盘点:最值得托付终身的星座
  9. mysql8.0主从配置,MySQL 8.0主从服务器(Master-Slave)配置
  10. 计算机f8键的功能,详解:XP系统修改启动时F8键有哪些功能?
  11. xlc mysql_mysql – 用于存储产品信息的noSQL?
  12. PAIP.DW 各个版本的差别大比较。
  13. MYSQL登录和常见命令
  14. Android cpu降频工具,安卓手机CPU调频/调压工具_手机CPU管理 V16.6.9 安卓版
  15. vulnhub Pwned: 1
  16. STM32:使用外部中断控制对射式红外传感器并计次
  17. 测设面试题笔试题总结
  18. 防水蓝牙耳机哪个好?防水音质好的蓝牙耳机推荐
  19. 首个可用于深度学习的ToF相关数据集!基于置信度的立体相机以及ToF相机深度图融合框架...
  20. Tcl列表元素查找命令lsearch

热门文章

  1. 介绍DOTA2 AI的开发基础——调试
  2. 24小时制和12小时制am Matlab,十二钟头制与二十四小时制详解
  3. 【论文写作】Word文档中的MathType公式大小不一导致版面很难看完美解决方法
  4. 设计师专属的导航网站
  5. IT业软件测试的男女性别差异渐趋消褪
  6. 深入浅出LSTM学习
  7. iPhone 14/Pro卫星紧急求救上线;非法采集用户位置,谷歌赔偿3.9亿美元;Node.js 19.1.0发布|极客头条
  8. 通过函数名称字符串发起调用/函数名反射
  9. 数据分析之信用风险评分卡建立
  10. Windows技术文章汇集