NYOJ 華山論劍

2021-07-29 13:59:33 字數 1224 閱讀 1051

時間限制:

1000 ms  |  記憶體限制:

65535 kb

難度:3

描述

有n個劍客(編號1~n)相約華山比劍,分 m 次決鬥,為了節省時間,每次決鬥 編號在[l

,r]的劍客一起決鬥,然後xi獲勝。當進行下一次決鬥,失敗後的劍客可能再參與到決鬥,m 次決鬥後可能不止一位獲勝者(沒有失敗過就視為獲勝者)。

輸入

多組測試資料。

對於每組測試資料,第一行輸入n和m。接下來輸入m行,每行輸入l,r,xi。

2 ≤ n ≤ 3*10^5; 1 ≤ m ≤ 3*10^5,l ≤ xi ≤ r

輸出每組測試資料輸出n個數字,數字間用空格隔開。第i個數子表示第一次擊敗i號劍客的劍客編號,若i號劍客是最後的獲勝者,輸出0;

樣例輸入

3 2

1 2 2

1 3 2

樣例輸出

2 0 2

這個題目當時一看有查詢,就想到了線段樹的做法,做完之後看了看標程,發現別人是使用狀態壓縮做的,這裡給大家介紹一下用線段樹怎樣做的,不用建樹,不用查詢操作,只涉及到區間更新,基礎的知識。

#include #include #include #define lson l,mid,d<<1

#define rson mid+1,r,d<<1|1

using namespace std;

int t[301000*5],a[301000];

//a陣列記錄獲勝者

//t陣列用來標記該區間內還是否有沒有勝利的人

//沒有失敗的人用1標記,單點更新

int n,m,u,v,w;

void up(int l,int r,int d,int ll,int rr)

return;

} int mid = (l+r)>>1;

if(rr<=mid)up(lson,ll,rr);

else if(ll>mid)up(rson,ll,rr);

else

t[d]=t[d<<1]&&t[d<<1|1];//採用與操作向上更新

}int main()

for(int i = 1;i <= n;i++)

printf("\n");

}return 0;

}

輸出長劍 華山論劍

description劍,古代兵器之一,屬於 短兵 乃是兵中王者,被稱為 百兵之王 古王皆有君子之氣,亦有皇上君臨天下之說,素有 百兵之君 的美稱。古代的劍由金屬製成,長條形,有著筆直的劍身和尖銳的劍尖,後端有短柄,現在,我們想要用字串畫出劍的形狀,短柄由數字 0 組成,劍身由大寫字母i組成,比如 ...

國內SNS市場「華山論劍」

話說,2008年,是sns時代!果真,康勝大哥就推出了uchome sns產品。不止將國內老一代bbs元老動網bbs和windphp bbs遠遠拋在腦後,而且也給國內的為數不多的sns開源服務商給了乙個很大的下馬威啊!於是呢,國內的老二,老三bbs服務商忙著搞點什麼 戰略合作聯盟 其實是啥聯盟啊,有...

Nhibernate分析之華山論劍篇

原來一直使用 生成,包括code ith和天平兄的codematic。最近打算系統學習一下nhibernate,經過簡單的一點探索,發現orm和 生成真是個有千秋。本文側重比較一下orm和 生成二者的優缺點,讓二者華山一比高下,目的為去偽存真,使二者能夠相輔相成。從而更好的提高開發效率。1 針對資料...