外賣店優先順序
一定對的做法,模擬每個時刻的情況
判斷哪些店有訂單哪些店沒有訂單
10^5次方
離散的有很多個訂單,把中間壓縮掉,連續沒有訂單的,放到購買訂單那裡處理
將所有訂單按照時間順序排序,一次處理一批訂單相同的訂單,相同時刻
模擬題偽**比較重要
#include
#include
#include
#include
#define x first
#define y second
using namespace std;
typedef pair pii;
const int maxn = 1e5 + 10;
int score[maxn], last[maxn];
pii order[maxn];
bool st[maxn];
int n, m, t;
int main()
cin >> n >> m >> t;
for (int i = 0; i < m; i++)
scanf("%d %d", &order[i].x, &order[i].y);
sort(order, order + m);
for(int i = 0; i < m;)
int j = i;
while(j < m && order[j] == order[i]) j ++;
int cnt = j - i; // 某一時刻訂單的數量
int ts = order[i].x;
int id = order[i].y;
i = j;
score[id] -= ts - last[id] - 1;
if(score[id] < 0) score[id] = 0;
if(score[id] <= 3) st[id] = false;
score[id] += cnt * 2;
if(score[id] > 5) st[id] = true;
last[id] = ts;
for (int i = 1; i <= n; i++) // 處理1-n,因為有可能有些訂單沒有出現店名
if(last[i] < t)
score[i] -= t - last[i];
if(score[i] <= 3) st[i] = false;
int res;
for(int i = 1; i <= n; i ++) res += st[i]; // 處理1-n
cout << res << endl;
return 0;
外賣店優先順序
歡迎來訪 題目鏈結 拿到題目之後,首先想想暴力的做法,暴力的做法按照時間列舉,在某個時間點上列舉所有的外賣店若是有訂單優先順序就加上cnt 訂單的數量 2,否則就減去1,再按照優先順序的數值判斷是否在優先快取中。列舉完所有時間以後,再看t時刻的優先快取中的外賣店的數量。這種暴力的時間複雜度我寫的 是...
送外賣優先順序 讀者來稿 當外賣小哥的初體驗
前段時間因為廠裡訂單少,辭退了我們這一批臨時工,找了幾天沒有找到合適的工作,我又失業了。早就聽說,跑外賣很掙錢,又自由,時間可以自己支配。於是,我摩拳擦掌,註冊成為了一名美團眾包騎手。然而,我卻發現,跑外賣遠沒那麼容易,在街道上飛馳亮麗的風景線之後,是多少騎手的無奈和心酸。雖然在這個城市打工2年多了...
1241 外賣店優先順序
飽了麼 外賣系統中維護著 n 家外賣店,編號 1 n 每家外賣店都有乙個優先順序,初始時 0 時刻 優先順序都為 0 每經過 1 個時間單位,如果外賣店沒有訂單,則優先順序會減少 1 最低減到 0 而如果外賣店有訂單,則優先順序不減反加,每有一單優先順序加 2 如果某家外賣店某時刻優先順序大於 5 ...