簡單記錄一下自己的**,以後方便複習
其實有了這樣子的乙個模板,題目變式自己改改就可以,比如說加減變成乘除等等。
#pragma gcc optimize(3,"ofast","inline")
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define maxn 1000005
//#define true false
//#define false true
const
int maxn =
0x3f3f3f3f
;const
int minn =
0xc0c0c00c
;const
double pi =
acos(-
1);typedef
long
long ll;
const
int mod =
1e9+7;
using
namespace std;
ll arr[maxn]
;ll tree[maxn]
;ll add[maxn]
;void
build_tree
(ll node, ll start, ll ends)
}void
update_treepoint
(ll node, ll start, ll ends, ll idx, ll val)
else
}void
add(ll node, ll start, ll ends, ll val)
void
pushdown
(ll node, ll start, ll ends, ll mid)
void
update_section
(ll node, ll start, ll ends, ll l, ll r, ll val)
ll query_tree
(ll node, ll start, ll ends, ll l, ll r)
intmain()
else
}return0;
}
C 線段樹 區間修改 區間查詢
這次要引入乙個核心變數 lazy 懶標記 為了達到區間修改的目的 又為了減少運算量 所以就需要引入懶標記這個變數 用來滿足 即用即推 子線段要用了便向下推行 lazy 舉個例子 如果我們只用紅色這個線段 那就不用向下推 把 lazy 留在這裡 但是如果要用到橙色的部分 那就需要把 lazy 下推到橙...
FJUT 借教室 線段樹區間查詢 區間修改
解題思路 看到題目,經典的區間查詢 區間修改,我們用線段樹維護一段區間的最小值,每當有新的訂單,我們就先查詢訂單時間範圍內的最小教室數量,然後與dj作比較,如果比dj小,那麼我們可以標記為false,然後後面的操作都不用看了,因為他只要求輸出第乙個不滿足的訂單,否則就按照訂單進行區間修改,即在該訂單...
線段樹單點修改區間查詢
這是一道模板題。給定數列 a 1 a 2 a n 你需要依次進行 qq 個操作,操作有兩類 1 i x 給定 i,x,將 a i 加上 x 2 l r 給定 l,r,求 ri la i 的值 換言之,求 a l a l 1 a r 的值 input 第一行包含 2 個正整數 n,q,表示數列長度和詢...