揹包的一些idea

2022-05-31 06:36:12 字數 481 閱讀 1976

題解:

給出n個物品,每次能使用l-r之間的物品,問能不能表示出k,m次詢問

k<=100,m,n=1e5

想了線段樹分治 發現是k^2(n+m)logn

claris告訴我可以直接分治

我們對mid-r mid-l分別求一次揹包

這樣是nklogn的

我們就可以對包含mid的公司做處理

o(k) 查詢

for(i=0;i<=k;i++)ans|=f[l][i]&g[r][k-i]

然後就解決了

還有個問題是怎麼找對應mid的區間

我的思路是對每層都列舉所有詢問暴力二分一下h的後繼(把所有區間起點搞出來)

這樣是mlog^2 n (雖然不影響)

claris提供了一種mlogn的做法

原理是每個有效點只會進入log次

做法就是每次對不在區間內的扔了 做好的也扔了(不然指數級遞增的)

idea的一些使用技巧

使用100.fori他會給你自動生成0 99的for迴圈 對準資料夾alt insert,建立class 插入模板 ctrl j 在樹形檢視中編輯條目 f4 view enter full screen ctrl 切換檢視 intellij idea的檢視模式 intellij idea 檢視模式介...

一些包的安裝

tensorflow 基於anaconda的安裝 開啟anconda prompt配置清華映象 conda config add channels conda config set show channel urls yes 建立tensorflow工作環境 conda create name tf...

閉包的一些

由於閉包包含之前的執行環境,所以以下的i指向同乙個i function createfunctions return result var fuk createfunctions for var i 0 i fuk.length i 10 10 10.解決方式 function createfunc...