1. 程式人生 > >hdu1199 初學離散化的一點心得

hdu1199 初學離散化的一點心得

hdu 1199總結:關於這道題,就不貼程式碼了,網上有的是大神的程式碼,主要是剛接觸離散化,有一點學習心得。

我們的老師曾經這麼說過,對於一道題,剛入手時最好是有一個暴力的想法,也就是最樸素的想法,然後評估時間複雜度,會超時,就要用其他演算法或者資料結構優化這個最暴力的解法。

對於這道color the ball 也是一樣,最樸素的想法,開一個10^9的陣列,置為0,對於後面的每一段w[a,b],就全部置為1,每一段的b[a,b]置為0,顯而易見,這樣無論是時間複雜度還是空間複雜度都無法承受得起,那麼就在此基礎上進行優化,可以看到的是,10^9的數組裡有用的數其實就是後面詢問的每一個區間的端點,區間中的的值都是沒有用的,浪費了巨大的空間,因此可以進行一個壓縮,只需按端點相對大小排序,而至於那些區間的長度,用個結構體連同兩個端點值儲存起來就行了。

我們也可以看成是一個對映,比如所有的左端點為a1,a2,....對於某一個a,在f對應法則下,f(a)為a在這這個線性表中按從小到大的排序