這一題要怎麼解?我用2個二分搜尋但是一直WA(33%),這一題有其他解法嗎?還是有什麼特殊的情況?
還有目前484只有我沒過qq
雙重二分確實可以得到所求,但問題是兩層二分各自所扮演的角色。
可否請您陳述一下您二分的條件或是它們做的事呢?
第一個二分我是寫在(-10000)*n ~ 2*n*n + 2*n 之間搜尋一個數使得矩陣內有m-1個數字小於他。
然後第二個二分是用來判斷矩陣中有幾個小於他的元素,就是先列舉 i 然後再二分搜 j 的值,因為 j (固定 i )似乎是遞增的。
然後找到數之後考慮它不在矩陣內的可能性,用第二個二分稍作修改,找到離他最近又大於他的元素就是答案。
我試過用暴力解比對n = 1~200都沒問題,而且我有修改過使得相同的數不會並排(這麼做讓掛掉的點稍微前進了一點)
雙重二分確實可以得到所求,但問題是兩層二分各自所扮演的角色。
可否請您陳述一下您二分的條件或是它們做的事呢?
第一個二分我是寫在(-10000)*n ~ 2*n*n + 2*n 之間搜尋一個數使得矩陣內有m-1個數字小於他。
然後第二個二分是用來判斷矩陣中有幾個小於他的元素,就是先列舉 i 然後再二分搜 j 的值,因為 j (固定 i )似乎是遞增的。
然後找到數之後考慮它不在矩陣內的可能性,用第二個二分稍作修改,找到離他最近又大於他的元素就是答案。
我試過用暴力解比對n = 1~200都沒問題,而且我有修改過使得相同的數不會並排(這麼做讓掛掉的點稍微前進了一點)
據我的理解,這兩個二分最後收束到的值正好會在矩陣裡(剛好就是第 M 小的)。
當然,這也要看第二個二分怎麼寫。
如果第一個二分的上界下修之條件為第二個二分統計出有 > M 個大於目前中間值(第一二分上界與下界之平均),而不是有 ≧ M 個的話,結果就不會是上面這樣……應該吧。
雙重二分確實可以得到所求,但問題是兩層二分各自所扮演的角色。
可否請您陳述一下您二分的條件或是它們做的事呢?
第一個二分我是寫在(-10000)*n ~ 2*n*n + 2*n 之間搜尋一個數使得矩陣內有m-1個數字小於他。
然後第二個二分是用來判斷矩陣中有幾個小於他的元素,就是先列舉 i 然後再二分搜 j 的值,因為 j (固定 i )似乎是遞增的。
然後找到數之後考慮它不在矩陣內的可能性,用第二個二分稍作修改,找到離他最近又大於他的元素就是答案。
我試過用暴力解比對n = 1~200都沒問題,而且我有修改過使得相同的數不會並排(這麼做讓掛掉的點稍微前進了一點)
據我的理解,這兩個二分最後收束到的值正好會在矩陣裡(剛好就是第 M 小的)。
當然,這也要看第二個二分怎麼寫。
如果第一個二分的上界下修之條件為第二個二分統計出有 > M 個大於目前中間值(第一二分上界與下界之平均),而不是有 ≧ M 個的話,結果就不會是上面這樣……應該吧。
喔喔我找到問題了 :)
我把答案的指派設置在他偵測到剛好有m-1個數小於他的時候,但是其實二分搜收束的答案不見得會計算出m-1個因為會有複數個相同數字。
總之感謝拉!!