wwh是蕪湖一中的一名程式設計師,有一天,他有幸被ycw的找去。。。
ycw有n張數學考試卷。
ycw的問題是這樣的:
ycw有一大堆的考試卷,一共n張,這些考試卷被他排成一行,每次考試都有乙個預期成績。
ycw一共有m個問題:
1 x k 將第x次考試的預期成績加上為k(比如,ycw重考一遍)
2 x y k 將第x到y次考試的預期成績都加上k(比如,ycw瘋狂刷題)
3 x y 求第x到y次考試的預期成績最大值。
4 x y 求第x到y次考試的預期成績最小值。
ycw不想被老師和家長找,也不想寫線段樹,於是他找到了wwh。
wwh只會暴力,於是找到了ak了noi2017的c國的第一oier,你,來幫他解決這個問題。
第一行兩個數n,m。
第二行n個數,分別表示原來考試的預期成績
第3~m+2行,表示ycw的問題,格式如題目描述中所述。
每行乙個數,表示3,4詢問的答案
#include#include#include#include#includeusing namespace std;
int main()
printf("\n");
while(m--)
else if(x==2)
while(ch>='0'&&ch<='9')
return w*f;
}int main()
else if(a==2)
else if(a==3)
else
}}
100%資料保證:n , m<=200,000,1<=x , y<=n,|k|<=10^9
題解:半小時不到打完程式,修改了快1個小時,心態還沒崩我覺得我也挺厲害的,
l打成l,r打成r,空間沒*4,pushdown特判多了等等各種問題層出不窮。醉了
#include#include#include
#include
#include
#include
#include
#include
using
namespace
std;
typedef
long
long
ll;const
int n=200002
;ll x,y,mx[n*4],mn[n*4],add[n*4
],n,mt,op,z,a[n];
long
long
get()
while(ch>='
0'&&ch<='9')
return w*f;
}ll maxx(ll p,ll q)
ll minn(ll p,ll q)
void pushdown(int rt,int ln,int
rn)if
(add[rt])
}void
pushup(ll rt)
void
build(ll l,ll r,ll rt)
ll m=(l+r)/2
; build(l,m,rt*2
); build(m+1,r,rt*2+1
); pushup(rt);
}
ll workmn(ll l,ll r,ll l,ll r,ll rt)
ll workmx(ll l,ll r,ll l,ll r,ll rt)
void
update(ll l,ll r,ll c,ll l,ll r,ll rt)
ll m=(l+r)/2
; pushdown(rt,m-l+1,r-m);
if(l <= m) update(l,r,c,l,m,rt*2
);
if(r > m) update(l,r,c,m+1,r,rt*2+1
); pushup(rt);
} int
main()
else
if(op==2
)
else
if(op==3
)
else
if(op==4
) }
return0;
}
YCW的程式設計學習
1.3 稅後工資檢視 1.4 年齡數字變英文 二.實踐 int tmain int argc,tchar ar else if c a c z else cout 請輸入字母!pause return0 int bidaxiao int x,int y 主cpp檔案 intbidaxiao int ...
ycw的成績表
題目背景 wwh是蕪湖一中的一名程式設計師,有一天,他有幸被ycw的找去。ycw有n張數學考試卷。題目描述 ycw的問題是這樣的 ycw有一大堆的考試卷,一共n張,這些考試卷被他排成一行,每次考試都有乙個預期成績。ycw一共有m個問題 1 x k 將第x次考試的預期成績加上為k 比如,ycw重考一遍...
uoj 176 新年的繁榮
給出乙個完全圖,邊權為兩點權值的and,求最大生成樹。這題用最小生成樹的boruvka演算法。大概就是每次找到每乙個聯通塊權值最大的邊,將這些聯通塊合併,直到只剩乙個聯通塊。因為每次聯通塊的個數至少減半,所以只會做log次操作。那麼這題相當於每個點有不同顏色,要找到每個點的異色點中最大的and值。扔...