蓝桥杯2019年省赛外卖店优先级

题目:有N家外卖店,每个外卖店都有一个优先级,初始时刻优先级为0。每经过一个时间单位,如果没有订单,则优先级减1;如果有订单,优先级不减反加,每有一单优先级加2。对于某一时刻某家外卖店的优先级大于5,则会被加入优先缓存;小于等于3就会被清除出优先缓存。

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

输入:第一行包含三个整数N,M,T

输出:一个整数代表答案

解题思路:

暴力解法:

使用map[N]数组存储某一外卖店在某一时刻接收到的订单数。

例如用map[i][j](表示map[i]中键为j的值),来表示i外卖店在j时刻接收到的订单数。

同时需要设置一个flag来表示该外卖店是否在优先缓存中。

最后暴力遍历每个外卖店在每个时刻接收到的订单数。

#include <bits/stdc++.h>
using namespace std;
#define int long long 
const int N = 1e5+10;
int n, m, t;
map<int, int> mp[N];
int res, flag, ans = 0;
signed main(){
	cin >> n >> m >> t;
	for(int i = 0; i<m; i++){
		int ts, id;
		cin >> ts >> id;
		mp[id][ts]++;
	}
	for(int i = 1; i<=n; i++){
		res = 0;
		flag = 0;
		for(int j = 1; j<=t; j++){
			if(mp[i].find(j)!=mp[i].end()){
				res += 2*mp[i][j];
				if(res>5) flag = 1;
			}
			else if(res>0){
				res--;
				if(res<=3) flag = 0;
			}
		}
		if(flag) ans++;
	}
	cout << ans;
	return 0;
} 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值