「飽了麼」外賣系統中維護著 \(n\) 家外賣店,編號 \(1∼n\)。
每家外賣店都有乙個優先順序,初始時 (\(0\) 時刻) 優先順序都為 \(0\)。
每經過 \(1\) 個時間單位,如果外賣店沒有訂單,則優先順序會減少 \(1\),最低減到 \(0\);而如果外賣店有訂單,則優先順序不減反加,每有一單優先順序加 \(2\)。
如果某家外賣店某時刻優先順序大於 \(5\),則會被系統加入優先快取中;如果優先順序小於等於 \(3\),則會被清除出優先快取。
給定 \(t\) 時刻以內的 \(m\) 條訂單資訊,請你計算 \(t\) 時刻時有多少外賣店在優先快取中。
第一行包含 \(3\) 個整數 \(n,m,t\)。
以下 \(m\) 行每行包含兩個整數 \(ts\) 和 \(id\),表示 \(ts\) 時刻編號 \(id\) 的外賣店收到乙個訂單。
輸出乙個整數代表答案。
資料範圍
\(1≤n,m,t≤10^5,\)
\(1≤ts≤t,\)
\(1≤id≤n\)
輸入樣例:
2 6 6
1 15 2
3 16 2
2 16 2
輸出樣例:1
樣例解釋
\(6\) 時刻時,\(1\) 號店優先順序降到 \(3\),被移除出優先快取;\(2\) 號店優先順序公升到 \(6\),加入優先快取。
所以是有 \(1\) 家店 (\(2\) 號) 在優先快取中。
模擬由於每家店之間互不影響,所以可以把每家店分開,按時間排序,按時間模擬一遍
// problem: 外賣店優先順序
// contest: acwing
// url:
// memory limit: 64 mb
// time limit: 1000 ms
// // powered by cp editor (
// %%%skyqwq
#include //#define int long long
#define help
#define pb push_back
#define fi first
#define se second
#define mkp make_pair
using namespace std;
typedef long long ll;
typedef pairpii;
typedef pairpll;
template bool chkmax(t &x, t y)
template bool chkmin(t &x, t y)
template void inline read(t &x)
while (s <= '9' && s >= '0') x = x * 10 + (s ^ 48), s = getchar();
x *= f;
}const int n=1e5+5;
int n,m,t;
unordered_map> mp;
int main()
int res=0;
for(auto t:mp)
priority-=t-tss.back();
if(priority<=3)f=false;
res+=f;
}cout
}
送外賣優先順序 AcWing1241 外賣店優先順序
外賣店優先順序 一定對的做法,模擬每個時刻的情況 判斷哪些店有訂單哪些店沒有訂單 10 5次方 離散的有很多個訂單,把中間壓縮掉,連續沒有訂單的,放到購買訂單那裡處理 將所有訂單按照時間順序排序,一次處理一批訂單相同的訂單,相同時刻 模擬題偽 比較重要 include include include...
外賣店優先順序
歡迎來訪 題目鏈結 拿到題目之後,首先想想暴力的做法,暴力的做法按照時間列舉,在某個時間點上列舉所有的外賣店若是有訂單優先順序就加上cnt 訂單的數量 2,否則就減去1,再按照優先順序的數值判斷是否在優先快取中。列舉完所有時間以後,再看t時刻的優先快取中的外賣店的數量。這種暴力的時間複雜度我寫的 是...
第十屆藍橋杯A組(C C 組) 外賣店優先順序
這道題還是列舉的思路,另外還運用到了vector容器。就是按時間乙個乙個出訂單,沒出乙個判斷一次,判斷此刻店的狀態。把問題劃分為一家一家店的小問題。include include includeusing namespace std const int maxm 100000 vectora max...