60分求调
查看原帖
60分求调
582415
xie_yuhao楼主2023/6/7 19:15
#include<bits/stdc++.h>
using namespace std;

int n,m,t,id,d,sum,res;
map<int,vector<int>> mp;
bool tag;

int main() {
	ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);

	cin>>n>>m>>t;
	while(m--)cin>>d>>id,mp[id].emplace_back(d);

	for(auto& p:mp) {
		if(p.second.size()<=2)continue;
		
		auto &vec=p.second;
		sort(vec.begin(),vec.end());
		
		sum=2,tag=false;
		for(int i=1; i<vec.size(); i++) {		
			if(vec[i]-vec[i-1]<=1)sum+=2;
			else sum=max(0,sum-(vec[i]-vec[i-1]-1))+2;

			if(sum>5)tag=true;
			else if(sum<=3)tag=false;
		}
		sum=max(0,sum-(t-vec.back()));
		if(sum<=3)tag=false;
		
		if(tag)res++;
	}
	cout<<res;
	//system("pause");
	return 0;
}

思路: 每间外卖店接受的订单按第几天顺序排好,数学一段段的处理,相邻订单差一天,同一天,都不用减1。

2023/6/7 19:15
加载中...