時間限制:
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 21 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 針對資料...