1. 程式人生 > >bzoj2018年5月賽

bzoj2018年5月賽

記憶 如果 怎麽 題解 沒有 結構 bsp cto 記憶化搜索

題解:

老早之前看的並沒有寫題解。。

t1:

我剛開始想的是線段樹來維護。。

看了題解發現直接二分就行了

很容易發現因數只會有30個

那麽我們就統計每一種因數在這段區間的個數

然後開個vector記錄這種因數的位置 二分一下就好了

nlog^2

t2:

t3:

我覺得這道題出的還是不錯的

首先考慮一下如果我們知道它的結構怎麽統計方案數

會發現就是f(x)=f(son1)*f(son 2)*C(son1+son2,son1)

然後我們考慮怎麽去構造方案

首先我們考慮一下暴力dfs

那麽f(son1)一定就是它的約數

而繼續下去也一定都是它的約數,這樣我們就可以考慮記憶化搜索了

那麽記錄的狀態是什麽呢? 我們去記錄,方案數為x,最少要用幾個點

這樣我們的問題就變成了 要確定f(son2)*C(son1+son2,son1)>=k 其中son1>=y

那麽我們可以考慮預處理出當son1至少要x個點時,要表示出k,至少需要幾個點

這樣我們詢問是o(1)的 考慮一下怎麽維護

bzoj2018年5月賽