LOJ 534 花團(線段樹 dfs棧)

2022-05-14 11:30:08 字數 1119 閱讀 8219

又是複雜度錯誤的一題,\(o(n^2\log n)\) 能過 \(15000\) 。

更新時將物品當做標記,打到線段樹上 ,遍歷到乙個節點時,都在上面做揹包,往兒子走時將揹包陣列拷貝下來,到另乙個兒子重新拷貝一次,故揹包個數和深度相同。

詢問時由於已經維護好了目前的揹包,可以直接詢問。

這就是\(\text\) 棧的思路,在 \(\text\) 時維護乙個棧,直接將父親的資訊拿下來使用。

#include#define for(i,x,y) for(int i=(x),i##end=(y);i<=i##end;++i)

#define dor(i,x,y) for(int i=(x),i##end=(y);i>=i##end;--i)

#define x first

#define y second

typedef long long ll;

using namespace std;

typedef pairpii;

const int n=15005;

const int logn=18;

struct knapsack

void reset(int _n)

void zo(int v,int w)

};knapsack ks[logn];

vectora[n<<2];

int q,maxv,t;

ll lastans;

void update(int k,int l,int r,int v,int w,int l,int r)

int mid=(l+r)>>1;

if(l<=mid)update(k<<1,l,r,v,w,l,mid);

if(r>mid)update(k<<1|1,l,r,v,w,mid+1,r);

}void solve(int k,int d,int l,int r)

else

else

} return;

} int mid=(l+r)>>1;

solve(k<<1,d+1,l,mid);

solve(k<<1|1,d+1,mid+1,r);

}int main()

5 3 4 變數的使用規則

因為定義乙個成員變數時,成員變數將被放置到堆記憶體中,成員變數的作用域將擴大到類存在範圍或者物件存在範圍,這種範圍的擴大有兩個害處 增大了變數的生存空間,這將導致更大的記憶體開銷。擴大了變數的作用域,這不利於提高程式的內聚性。package chap5 3 public class scopetes...

php 5 3 4安裝配置 原創

2.安裝 前面配置可看 和老的沒有區別 下面開始安裝5.3.4 tar zxvf php 5.3.4.tar.gz cd php 5.3.4 make zend extra libs liconv make install 安裝個開發環境試試 cp php.ini development usr l...

Python高階之路 5 3 4 split方法

split和join方法互為逆方法。split方法通過分隔符將乙個字串拆成乙個序列。如果split方法不指定任何引數,那麼split方法會把所有空格 空格符 製表符 換行符等 作為分隔符。例 5.12 本例使用split方法將乙個加法表示式的運算元放到了乙個序列中,並輸出該序列。並且將乙個linux...