貪心(未完成)

數學公式:http://blog.csdn.net/lanxuezaipiao/article/details/44341645
下面的這些問題我都沒打過,只有想過思路,可能會有錯。


P1325 雷達安裝
https://www.luogu.org/problemnew/show/1325

若豎直距離超過半徑直接輸出-1。
預處理:以P爲圓心,做半徑爲r的圓,交x軸於q1 ,q2 ,則若要覆蓋這個點,雷達需在q1q2 上。
那麼這一題就轉化爲線段覆蓋問題了。對線段右端點進行排序,然後從右往左選取。


P3146 [USACO16OPEN]248
https://www.luogu.org/problemnew/show/3146
給定一個1*n的地圖,在裏面玩2048,每次可以合併相鄰兩個(數值範圍1-40),問最大能合出多少。注意合併後的數值並非加倍而是+1,例如2與2合併後的數值爲3。

我想到的:每一個聯通塊(大小大於1,假設爲n,數值爲i)合併後結果就是二進制下的1的個數個,其中最大的爲i+最高二進制位對應的冪。
比如:
10(10)=1010(2) 可以分出1+log2321+log212 。用樹狀數組的x-=x&(-x)每次取lowbit,就可以得到這個聯通塊合併出的結果了。
那麼貪心的策略就是每次對最小的非1聯通塊進行處理,記錄並更新最值(取個max),兩端如果存在x可以再次合併,就將其移動到x旁邊。
但是實現起來好像不太容易,而且感覺並不是最優的…
看下題解發現是道DP題…那就重定向到DP專欄吧
http://blog.csdn.net/uiqrm/article/details/78313830

考慮用區間DP來解決。設dp[i][j]表示區間i j所能獲得的最大值。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章