bzoj
洛谷神仙zs
y zsy
出在了no
ipn oi
p模擬的題目。(然而zs
y zsy
出的還是這題的公升級版)
首先明確一點,這題是乙個吉司機線段樹。
如果只有區間加法,區間賦值,區間最大值,那麼這題很簡單。
但是加上了乙個區間歷史最值,這就很煩了。
於是我們就有了乙個神仙做法,
定義乙個表示(a
,b) (a,
b)
表示區間內所有數先+a
+ a再和
b b
取max' role="presentation" style="position: relative;">max
max,即
x=ma
x(x+
a,b)
x =m
ax(x
+a,b
)那麼這樣一來,區間加法轉化成(a
,−∞)
( a,
−∞
),區間賦值變成了(−
∞,b)
( −∞
,b
)考慮如何合併標記,現在有兩個標記(a
,b),
(x,y
) (a,
b),(
x,y)
,將後者合併到前者上去。
那麼可以將標記轉化成(a
+x,m
ax(b
+x,y
))( a+
x,ma
x(b+
x,y)
),原因就是注意一下ma
x max
和加法的先後順序。
對於兩個標記如何合併ma
x max
,是(m
ax(a
,x),
max(
b,y)
) (ma
x(a,
x),m
ax(b
,y))
。原因就是我們可以把這個標記看做是乙個分段函式,那麼這個合併就比較顯然了。
回到題目。
這題到底在幹什麼呢?
首先對於維護當前值,這個東西是非常顯然的。
考慮如何維護乙個歷史最值,我們對於每個點額外維護乙個歷史最值的標記,每次覆蓋的時候不會覆蓋掉歷史最值的標記,只會用ma
x max
操作更新歷史最值標記。
這樣子似乎就可以做了。
#include
#include
#include
#include
#include
#include
#include
using
namespace
std;
#define ll long long
#define max 100100
#define lson (now<<1)
#define rson (now<<1|1)
#define inf 1050000000
inline
int read()
struct data
int calc(int x)
}mxt[max<<2],tag[max<<2];
int mx[max<<2],nw[max<<2];
data max(data a,data b);}
data operator+(data a,data b);}
void pushup(int now)
void puttag(int now,data a,data b)
void pushdown(int now)
void build(int now,int l,int r)
int mid=(l+r)>>1;
build(lson,l,mid);build(rson,mid+1,r);
pushup(now);
}void modify(int now,int l,int r,int l,int r,data a)
int mid=(l+r)>>1;pushdown(now);
if(l<=mid)modify(lson,l,mid,l,r,a);
if(r>mid)modify(rson,mid+1,r,l,r,a);
pushup(now);
}int query(int now,int l,int r,int l,int r,int opt)
int n,m;
char ch[20];
int main()
; if(ch[0]=='q')printf("%d\n",query(1,1,n,l,r,0));
else
if(ch[0]=='a')printf("%d\n",query(1,1,n,l,r,1));
else
if(ch[0]=='p')a.a=read(),modify(1,1,n,l,r,a);
else a.b=read(),modify(1,1,n,l,r,a);
}return
0;}
監控cpu 記憶體
pid 1 獲取程序pid echo pid interval 1 設定採集間隔 while true do echo date y m d h m s proc memlog.txt cat proc pid status grep e vmrss proc memlog.txt 獲取記憶體占用 ...
CPU監控分析
名稱 初始安裝 說明uptime 顯示系統執行時間和cpu負載情況 top 可以實時動態地檢視系統的整體運 況 htop top高階版 mpstat 多核cpu效能分析工具,實時檢視每個cpu的效能指標,以及所有cpu的平均指標 vmstat 檢視系統的整體使用情況 iostat 檢視cpu和磁碟i...
CPU實時監控mpstat
mpstat是multiprocessor statistics的縮寫,是實時系統監控工具。其報告與cpu的一些統計資訊,這些資訊存放在 proc stat檔案中。在多cpus系統裡,其不但能檢視所有cpu的平均狀況資訊,而且能夠檢視特定cpu的資訊。mpstat最大的特點是 可以檢視多核心cpu中...