關於2分,實在是自己的痛處,上次區域賽熱身的時候把2分寫掛了,被黑了好幾個月了= =,幸虧我有強大的心臟。。
2分的用處不僅僅在於查詢,還有很多用處,比如2分答案,查詢滿足條件的最大值,或者查詢滿足條件的最小值,又或者是平均值。
我寫的2分是這個樣子的(取自 線段樹和樹狀陣列各過一次poj2182)
因為我要找的是滿足空格數符合條件的最小的乙個值,也就是找下界,所以選擇更新乙個左開右閉的值,確保我找到的是下界。ps:解釋看下面
int bifind(int x)
return ub;
}
但是寫2分的時候最關鍵的是找到符合條件的那個答案和不符合條件的那個答案的那條分界線。這樣才能決定你到底是寫左開右閉區間的2分還是寫右閉左開區間的2分。
當你2分的答案區間是 小於答案的都不符合 大於等於答案的都符合的時候,其實你是找的乙個下界 ,因此你應該更新(lb,ub] 這樣乙個區間,這樣保證了lb永遠是個不符合條件的值,ub是符合條件的值,找到分界線就是ub-lb=1的時候,ub就是這樣滿足條件的乙個最小值。
反之,當你2分的答案區間是這樣的:大於答案的都不符合條件,小於等於答案的都符合條件的時候,你找的分界線應該是 [lb,ub)是個上界,所以應該更新乙個左閉右開區間。
所以,寫二分的時候,關鍵在於判斷問題到底是小於等於的符合條件還是大於等於的符合條件,然後選擇合適的半開半閉區間進行更新。更新的時候不滿足條件更新開區間那半邊,滿足條件的時候更新閉區間的哪一方,到最後肯定就是滿足條件與不滿足條件的分界線了。
所以說先介紹我名字的由來
估計許多人都認識什麼村上春樹 芥川龍之介和川端康成這些出名的日本作家,但少有人認得渡航吧,我用上述3個人的首字母就可打出他們的名字,但渡航卻什麼也沒有。渡航其實並不怎麼出名,能讓我注視到他是因為他寫的一部作品 春物 民間稱為 我的青春戀愛物語果然有問題 聽名字大多數人可能會認為這會是一部戀愛題材的作...
因為在乎你,所以我總是解釋,而你卻總是說我在掩飾。
我養成了晚睡熬夜的習慣 可是再也沒有人需要我陪需要我等 哈哈,你討厭我,我知道啊!揭開我所有的偽裝撕掉我所有的面具。沉默和敷衍哪個更揪心?他最揪心 失去的不再回來,回來的不再完美。因為你的與眾不同,因為你的特別,有時候你得習慣孤獨。對於我渺小的心臟來說,你代表著我整個世界。可以接受失敗,但絕對不能接...
「你說我是錯的,那你最好證明你是對的」
15年前,張小龍是中國top10的程式設計師。他乙個人寫 完成了foxmail的頭三個版本。foxmail如此受到歡迎,以至於他不得不外放了語言包,讓各種忠實粉絲翻譯為十幾種語言。直至今日,foxmail被收購,qqmail推出,foxmail的企業使用者依然有數百萬。一開始非常不順利,最早的版本類...