[蓝桥杯 2019 省 A] 外卖店优先级

模拟 双指针

cpp 复制代码
#include<iostream>
#include<algorithm>
using namespace std;
using ll = long long;
#define int long long
const int N = 1e5+10;
const int inf = 0x3f3f3f3f;
const int mod = 1e9+7;

int n,m,ts;

bool vis[N];
int a[N];
int last[N];
pair<int,int>query[N];

void solve()
{
	cin>>n>>m>>ts;
	
	for(int i=1;i<=m;i++){
		int a,b;cin>>a>>b;
		query[i] = {a,b};
	}
	
	sort(query+1,query+1+m);
	
	
	for(int i=1;i<=m;){
		
		int j = i;
		while(j+1<=m&&query[j+1].second==query[i].second)j++;
		int len = j-i+1;
		
		int t = query[i].first,id = query[i].second;
		
		//t-1  last[t]+1
		a[id] -= t-1-last[id];
		if(a[id]<0)a[id] = 0;
		if(a[id]<=3)vis[id] = 0;
		
		last[id] = t;
		
		
		a[id] += len*2;
		
		if(a[id]>5)vis[id] = 1;
		
		i = j+1;
	}
	
	
	for(int i=1;i<=n;i++){
		if(vis[i]&&a[i]-ts+last[i]<=3)vis[i] = 0;
	}
	
	int cnt = 0;
	for(int i=1;i<=n;i++)if(vis[i]){cnt++;}
	cout<<cnt;
	
	

}

signed main()
{
	ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
	int _;
	//cin>>_;
	_ = 1;
	while(_--)solve();
	return 0;
}
相关推荐
CS_浮鱼12 分钟前
【Linux编程】线程同步与互斥
linux·网络·c++
派大星爱吃鱼12 分钟前
素数检验方法
算法
十五年专注C++开发32 分钟前
libdatrie: 一个高效的 基于双数组字典树(Double-Array Trie)的C语言函数库
c语言·开发语言·trie
月下的郁王子36 分钟前
进阶学习 PHP 中的二进制和位运算
android·学习·php
Greedy Alg43 分钟前
LeetCode 72. 编辑距离(中等)
算法
xinxingrs1 小时前
贪心算法、动态规划以及相关应用(python)
笔记·python·学习·算法·贪心算法·动态规划
秋邱1 小时前
驾驭数据洪流:Python如何赋能您的数据思维与决策飞跃
jvm·算法·云原生·oracle·eureka·数据分析·推荐算法
侯小啾1 小时前
【23】C语言 左移(<<) 与 右移(>>) 位运算符在处理像素中的应用
c语言·算法·位运算·右移·左移
搂鱼1145141 小时前
(dp 优化)洛谷 P14460 寻雾启示 题解
算法·图论
sensen_kiss2 小时前
INT301 Bio-computation 生物计算(神经网络)Pt.8 主成分分析(PCA)与无监督学习
神经网络·学习·线性代数·机器学习