我對離散化的一些感悟

2021-06-23 02:02:08 字數 694 閱讀 4375

這幾天在做線段樹的專題,不免遇到一些題,資料很大,如果直接建樹,會造成記憶體超出限制,這時就要進行離散化了。

如果是區間的離散化,一般區間會涉及覆蓋關係, 那麼運用離散化之後,區間的覆蓋關係不能變,例如:

1——10 ,2——7 ,3——11,6——22;

將座標從小到大排序,也就是1,2,3,6,7,10,11,22

那麼新的區間也就是

1——6

2——5

3——7

4——8

覆蓋關係沒變,但是值小了很多,瞬間就減少了記憶體消耗

int seg[maxn][2];//儲存原來的點

struct node

mat[maxn<<1]

for(.....)

sort(mat,mat+2*n,cmp);

for(.....)

if(mat[i].line<0) //左邊,line 存的就是第i+1條邊

seg[-mat[i].line-1][0]=ans;//離散這條邊的左端

else

seg[mat[i].line-1][1]=ans;//離散這條邊的右端

}

這樣的話,離散前的點是沒了,如果我們不需要離散前的點,那麼可以這麼做,如果需要的話,可以開陣列儲存下來或者用map,把離散前的座標當成key,離散化的做value。這樣即離散了座標,也保留了原座標

對程式設計的一些感悟總結

如果您想學習電腦程式設計,卻又不知從何入手,那麼您不妨看看下面的幾種學習方案,可能會給您一些啟示吧!方案一 basic語言 visual basic 優點 1 basic 簡單易學,很容易上手。2 visual basic 提供了強大的視覺化程式設計能力,可以讓你輕鬆地做出漂亮的程式。3 眾多的控制...

我最近做產品的一些 感悟

時間的指標已經來到了2015年的12月,我在不禁感嘆時間過的太快,也在反思自己2015年的目標是否都達成了?我的答案當然是否定的 不知道大家進展如何呢?一定要做到一日三省吾身啊!越到年底事情越多,我在跟進產品常規迭代版本的同時,還在策劃一些新的產品,說白了就是要寫ppt!我之前已經寫了三個產品策劃,...

我對CPPUNIT的一些理解

一 測試用例 1 cppunit通常用於介面測試,如果進行路徑測試,需要考慮一些特殊問題,因為可能需要訪問被測類的保護或者私有成員。在這種情況下,可以考慮使用輔助類,輔助類從被測類派生,並將測試類宣告為友元。2 測試類從testfixture派生,該類宣告了setup teardown 函式,分別進...