資料結構專題 解題報告 N

2021-09-22 01:22:21 字數 1344 閱讀 6620

很板的題,我建了三棵樹,分別維護區間和最大值最小值,當然更簡潔的寫法是結構體一次掛三個屬性。不過也沒差其實。

要注意的是,查詢時初始化最小值最大值要用llinf,之前定義的inf是不夠的,詳見我的巨集定義。

話說這兩個還是之前偷看zh的cf上的**學來的(斜眼笑)……

#include#define maxn 10000005

#define maxm 200005

#define for(a, b, c) for(int a=b; a<=c; a++)

#define hrdg 1000000007

#define inf 2147483647

#define llinf 9223372036854775807

#define ll long long

#define pi acos(-1.0)

#define ls p<<1

#define rs p<<1|1

using namespace std;

ll n, m, a[maxn], tr[maxn<<2], tr2[maxn<<2], tr3[maxn<<2], tag[maxn<<2];

ll type, l, r, k;

//快讀

inline ll read()

while(c>='0'&&c<='9')

return x*f;

}void pushup(ll p)

void build(ll p, ll l, ll r)

void load(ll p, ll l, ll r, ll k)

void pushdown(ll p, ll l, ll r)

void update(ll nl, ll nr, ll l, ll r, ll p, ll k)

pushdown(p, l, r);

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

if(nl <= mid)

update(nl, nr, l, mid, ls, k);

if(nr >= mid+1)

update(nl, nr, mid+1, r, rs, k);

pushup(p);

}ll query1(ll nl, ll nr, ll l, ll r, ll p)

ll query2(ll nl, ll nr, ll l, ll r, ll p)

ll query3(ll nl, ll nr, ll l, ll r, ll p)

int main()

if(type == 2)

if(type == 3)

}return 0;

}

資料結構專題 解題報告 J

原題洛谷p1484種樹,又撿到一題做過的,lucky。所謂用堆來解決問題,從來就是乙個詞,貪心,堆的使用是否成功取決於你貪心的策略,而貪心一般來說處理起全域性最優是有難度的,本題引入了乙個小有名氣的高階貪心策略,反悔貪心。通過讀題,我們發現貪心有乙個尷尬之處在於,你如果選擇了此刻的最大值i,那麼在選...

資料結構 解題報告

給乙個長為 n 的 a 定義 n times n 的 b sum limits ra i 兩個操作,修改 a p 為 x 詢問 b 的歷史最小值。我居然把d1t1鴿到d4晚上.歷史最值 kd tree 先離線的把點放到kd tree中 要離散化 然後就是矩形加和單點查詢,打一下歷史最值的標記就好了 ...

動態規劃專題 解題報告 A

乙個經典的貨郎擔問題,加上17的範圍限制各種明示狀態壓縮,用二進位制來表示走過哪幾個城市,我們可以開乙個二維陣列dp i j 表示走過了i的城市,最後在j城市停留的距離。預處理一遍每個城市間的距離,算出dis i j 到dp i j 的狀態可以由 1 1 j k 轉移過來,比較距離儲存最優值就行,然...