bzoj_1251_序列終結者
【問題描述】 給定乙個長度為n的序列,每個序列的元素是乙個整數(廢話)。要支援以下三種操作: 1. 將[l,r]這個區間內的所有數加上v。 2. 將[l,r]這個區間翻轉,比如1 2 3 4變成4 3 2 1。 3. 求[l,r]這個區間中的最大值。 最開始所有元素都是0。
分析:模板題
維護兩個標記即可,標記只對子樹生效
**:
#include #include #include using namespace std;#define n 50050
#define ls ch[p][0]
#define rs ch[p][1]
int n,m;
int ch[n][2],f[n],siz[n],rt;
int turn[n],del[n],val[n],mx[n];
int get(int x)
void up(int p)
void rotate(int x)
void splay(int x,int y)
void pud(int p)
if(turn[p])
//up(p);
}void build(int fa,int l,int r)
int find(int x)
}}void reverse(int x,int p)
void add(int x,int p,int c)
void qmx(int x,int p)
int main()
else if(opt==2)
else
}}
bzoj 1251 序列終結者
題目在這裡 這應該是splay裸題了吧。對於每個節點儲存5個值,size,max,flag,lazy,val 分別表示這個節點的子樹大小,子樹的最大值,子樹是否有打過翻轉標記,子樹的增加的值,前面的所有都包括這個節點它自己 以及這個節點的當前值。對於一段區間 l,r 的詢問 修改,只需把l 1這個節...
bzoj1251 序列終結者
time limit 20 sec memory limit 162 mb submit 2971 solved 1188 submit status discuss 網上有許多題,就是給定乙個序列,要你支援幾種操作 a b c d。一看另一道題,又是乙個序列 要支援幾種操作 d c b a。尤其是...
BZOJ 1251 序列終結者
網上有許多題,就是給定乙個序列,要你支援幾種操作 a b c d。一看另一道題,又是乙個序列,要支援幾種操作 d c b a。尤其是我們這裡的某人,出模擬試題,居然還出了一道這樣的,真是沒技術含量 這樣,我也出一道題,我出這一道的目的是為了讓大家以後做這種題目有乙個 庫 可以依靠,沒有什麼其他的意思...