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 ...