2023年牛客寒假集訓營第三場 買禮物

2021-10-21 08:21:48 字數 2216 閱讀 3385

powered by:nefu ab_in

更新線段樹的三個板子

題意:查詢乙個區間內是否有相同的兩個數

(可以動態將某個數剔除掉)

知識點:線段樹 + 鍊錶

思路:

#include

using

namespace std;

#define ll long long

#define ull unsigned long long

#define ld long double

#define db double

#define all(x) (x).begin(),(x).end()

#define f first

#define s second

#define mp make_pair

#define pb emplace_back

#define sz(x) ((int)(x).size())

#define mset(s, _) memset(s, _, sizeof(s))

#define ios ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);

#define endl "\n"

#define forn(i, l, r) for (int i = l; i <= r; i++)

#define ls i << 1

#define rs i << 1 | 1

typedef pair<

int,

int> pii;

typedef pair pll;

const

int inf =

0x3f3f3f3f

;namespace xds_min

void

bulid

(int i,

int l,

int r)

int mid =

(l + r)

>>1;

bulid

(ls, l, mid)

;bulid

(rs, mid +

1, r)

;pushup

(i);

}inline

void update (

int i,

int l,

int r,

int x, ll y)

int mid =

(l + r)

>>1;

update

(ls, l, mid, x, y)

;update

(rs, mid +

1, r, x, y)

;pushup

(i);

} ll query

(int i,

int l,

int r,

int x,

int y)

}using

namespace xds_min;

int q;

ll last[n]

, id[n]

;int

main()

mset

(id,0)

;for

(int i = n; i >=

1; i--

)bulid(1

,1, n)

;while

(q --

)else

}return0;

}

完結。

牛客寒假集訓營第三場

題目 c題暴力搜尋 include using namespace std int n,k,r,ans struct ty a 20 pos 10 bool xiangjiao int i,int j intcalc return cnt void dfs int dep for int i 7 i...

2023年牛客寒假集訓營第五場題解

c 石子遊戲 思路 利用差分陣列將區間修改轉化為兩個端點處的單點修改,按照每次新增乙個長度為 k 的區間的規則,首先從左到右將所有點補到該點左邊比它高的點的高度,再從右到做將所有點補到該點右邊比它高的點的高度,最後特判一下第 n k 1 個點 因為差分時以該點為左端點的區間右端點無法判斷 然後如果能...

牛客寒假集訓營第三場E線段樹 鍊錶

題目 題目鏈結 有n nn個禮物,每個禮物都有乙個編號,有兩種操作 題解 對於每個位置i ii,維護兩個資訊 l as t i last i last i ia i ai 的位置,如果沒有置為000n ext i next i next i ia i ai 的位置,如果沒有置為n 1 n 1n 1 ...