求助!真的不知道怎么错的
  • 板块学术版
  • 楼主liuxinying886
  • 当前回复1
  • 已保存回复2
  • 发布时间2024/8/2 17:11
  • 上次更新2024/8/2 18:37:39
查看原帖
求助!真的不知道怎么错的
779823
liuxinying886楼主2024/8/2 17:11

“饱了么”外卖系统中有 N N 家外卖店,编号为 1 ∼ N 1∼N。每家外卖店都有一个推荐度,一开始时(第 0 0 天)所有外卖店的推荐度为 0 0。

在一天中,如果某家外卖店没有收到订单,那么该家外卖店的推荐度就会减少 1 1(最多减少到 0 0);而如果收到订单,那么每收到一个订单外卖店的推荐度就会增加 2 2。

“饱了么”平台会根据外卖店的推荐度来设置“优选外卖店”。在每一天结束时,如果某家外卖店的推荐度大于 5 5,那么该外卖店会在该天结束时被系统设置为“优选外卖店”;而如果某家“优选外卖店”在当天结束时的推荐度小于等于 3 3,那么该家外卖店会被系统取消“优选外卖店”的资格。

现在告诉你第 1 1 天到第 T T 天的 M M 条订单信息,请你求出第 T T 天结束时有多少家“优选外卖店”。

输入格式 第 1 1 行包含两个整数 N , M , T N,M,T。

接下来 M M 行,每行包含两个整数 t , i d t,id,表示第 t t 天编号为 i d id 的外卖店收到了一个订单。

输出格式 输出一个整数,表示第 T T 天结束时“优选外卖店”的数量。

#include<bits/stdc++.h>
using namespace std;
int n,m,t,vis[10010][10010];
int main(){
	cin>>n>>m>>t;
	while(m--){
		int a,b;
		cin>>a>>b;
		vis[b][a]++;
	}
	int num=0;
	for(int i=1;i<=n;i++){
		int man=0,vis1=0;
		for(int j=1;j<=t;j++){
			if(vis[i][j]>0)man=man+vis[i][j]*2;
			else if(vis[i][j]==0&&man>0)man=man-1;
			if(man>5&&vis1==0){
				num++;
				vis1=1;
			}
			if(man<=3&&vis1==1){
				num--;
				break;
			}
		}
	}
	cout<<num;
	return 0;
}
2024/8/2 17:11
加载中...