cogs247 售票系統 線段樹

2021-07-25 11:20:44 字數 1672 閱讀 2027

輸入檔案:railway.in 輸出檔案:railway.out

時間限制:1 s 記憶體限制:128 mb

【問題描述】

某次列車途經c個城市,城市編號依次為1到c,列車上共有s個座位,鐵路局規定售出的車票只能是坐票, 即車上所有的旅客都有座。售票系統是由計算機執行的,每乙個售票申請包含三個引數,分別用o、d、n表示,o為起始站,d為目的地站,n為車票張數。售票 系統對該售票申請作出受理或不受理的決定,只有在從o到d的區段內列車上都有n個或n個以上的空座位時該售票申請才被受理。請你寫乙個程式,實現這個自動 售票系統。

【輸入格式】

第一行包含三個用空格隔開的整數c、s和r,其中1≤c≤60000, l≤s≤60000,1≤r≤60000。c為城市個數,s為列車上的座位數,r為所有售票申請總數。接下來的r行每行為乙個售票申請,用三個由空格隔開的整數o,d和n表示,o為起始站,d 為目的地站,,n為車票站數,其中1≤d≤c,1≤o≤c,所有的售票申請按申請的時間從早到晚給出。

【輸出格式】

輸出共有r行,每行輸出乙個「yes」或「no」,表示當前的售票申請被受理或不被受理。

【輸入輸出樣例】

sample input:

4 6 4

1 4 2

1 3 2

2 4 3

1 2 3

sample output:

yes

yes

no no

線段樹+lazy標記

**如下:

#include 

#include

using namespace std;

struct segtreenode segtree[600001 * 4];

int c, s, r;

void build(int root, int l, int r)

int mid = (l + r) / 2;

build(root * 2, l, mid);

build(root * 2 + 1, mid + 1, r);

segtree[root].sum = max(segtree[root * 2].sum, segtree[root * 2 + 1].sum);

} void pushdown(int root)

void modify(int root, int l, int r, int val)

pushdown(root);

int mid = (segtree[root].lc + segtree[root].rc) / 2;

if (r <= mid) modify(root * 2, l, r, val);

else

if (l > mid) modify(root * 2 + 1, l, r, val);

else modify(root * 2, l, mid, val), modify(root * 2 + 1, mid + 1, r, val);

segtree[root].sum = max(segtree[root * 2].sum, segtree[root * 2 + 1].sum);

}int query(int root, int l, int r)

}int main()

return

0;}

cogs247 售票系統 線段樹

某次列車途經c個城市,城市編號依次為1到c,列車上共有s個座位,鐵路局規定售出的車票只能是坐票,即車上所有的旅客都有座。售票系統是由計算機執行的,每乙個售票申請包含三個引數,分別用o d n表示,o為起始站,d為目的地站,n為車票張數。售票 系統對該售票申請作出受理或不受理的決定,只有在從o到d的區...

cogs247 售票系統 線段樹

輸入檔案 railway.in 輸出檔案 railway.out 時間限制 1 s 記憶體限制 128 mb 問題描述 某次列車途經c個城市,城市編號依次為1到c,列車上共有s個座位,鐵路局規定售出的車票只能是坐票,即車上所有的旅客都有座。售票系統是由計算機執行的,每乙個售票申請包含三個引數,分別用...

cogs 247 售票系統 線段樹

輸入檔案 railway.in輸出檔案 railway.out簡單對比 時間限制 1 s 記憶體限制 128 mb 某次列車途經c個城市,城市編號依次為1到c,列車上共有s個座位,鐵路局規定售出的車票只能是坐票,即車上所有的旅客都有座。售票系統是由計算機執行的,每乙個售票申請包含三個引數,分別用o ...