国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

hdu 1754 I Hate It 線段樹單點(diǎn)更新區(qū)間查詢

2019-11-11 02:59:53
字體:
供稿:網(wǎng)友

題目:

I Hate It

Time Limit: 9000/3000 MS (java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 69414    Accepted Submission(s): 26895PRoblem Description很多學(xué)校流行一種比較的習(xí)慣。老師們很喜歡詢問,從某某到某某當(dāng)中,分?jǐn)?shù)最高的是多少。這讓很多學(xué)生很反感。不管你喜不喜歡,現(xiàn)在需要你做的是,就是按照老師的要求,寫一個程序,模擬老師的詢問。當(dāng)然,老師有時候需要更新某位同學(xué)的成績。 Input本題目包含多組測試,請?zhí)幚淼轿募Y(jié)束。在每個測試的第一行,有兩個正整數(shù) N 和 M ( 0<N<=200000,0<M<5000 ),分別代表學(xué)生的數(shù)目和操作的數(shù)目。學(xué)生ID編號分別從1編到N。第二行包含N個整數(shù),代表這N個學(xué)生的初始成績,其中第i個數(shù)代表ID為i的學(xué)生的成績。接下來有M行。每一行有一個字符 C (只取'Q'或'U') ,和兩個正整數(shù)A,B。當(dāng)C為'Q'的時候,表示這是一條詢問操作,它詢問ID從A到B(包括A,B)的學(xué)生當(dāng)中,成績最高的是多少。當(dāng)C為'U'的時候,表示這是一條更新操作,要求把ID為A的學(xué)生的成績更改為B。 Output對于每一次詢問操作,在一行里面輸出最高成績。 Sample Input
5 61 2 3 4 5Q 1 5U 3 6Q 3 4Q 4 5U 2 9Q 1 5 Sample Output
5659HintHuge input,the C function scanf() will work better than cin

代碼:

#include<iostream>#include<cstring>#include<cstdio>#include<cstdlib>#include<ctype.h>    //tower()#include<set>  #include<map>  #include<iomanip>// cout<<setprecision(1)<<fixed<<a;#include<vector>   #include<time.h>  #include<assert.h>  //assert#include<cmath>	#include<algorithm>#include<bitset>#include<limits.h>#include<stack>#include<queue>using namespace std;const int maxn=200010;const int inf=0x7fffffff;/*線段樹單點(diǎn)更新*/#define lson l,mid,rt<<1#define rson mid+1,r,rt<<1|1int n,m,stree[maxn<<2];void build(int l,int r,int rt){//葉節(jié)點(diǎn)從l到r,樹根為rt	if(l==r){		scanf("%d",&stree[rt]);///stree[rt]=a[l];		return;	}	int mid=(l+r)>>1;	build(lson);//自左向右讀入a[]中數(shù)據(jù) 	build(rson);	stree[rt]=max(stree[rt<<1],stree[rt<<1|1]); }void update(int x,int v,int l,int r,int rt){//線段樹(樹根為rt,對應(yīng)區(qū)間為[l,r])中x結(jié)點(diǎn)更新為v 	if(l==r){		stree[rt]=v;		return;	}	int mid=(l+r)>>1;	if(x<=mid) update(x,v,lson);	if(x>mid) update(x,v,rson);	stree[rt]=max(stree[rt<<1],stree[rt<<1|1]);}int query(int a,int b,int l,int r,int rt){//查詢線段樹(樹根為rt,對應(yīng)區(qū)間為[l,r])中子區(qū)間[a,b]的最大值 	if(a<=l&&b>=r) return stree[rt];	int ans=-inf;	int mid=(l+r)>>1;	if(a<=mid) ans=max(query(a,b,lson),ans);	if(b>mid) ans=max(query(a,b,rson),ans);	return ans;}int main(){//1560MS	4696K	while(scanf("%d%d",&n,&m)==2){		memset(stree,0,sizeof(stree));		build(1,n,1);		char s[5];		int p,q;		while(m--){			scanf("%s%d%d",s,&p,&q);			if(s[0]=='U') update(p,q,1,n,1);			else printf("%d/n",query(p,q,1,n,1));		}	}	return 0;}


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 阿瓦提县| 河东区| 运城市| 上虞市| 崇礼县| 科尔| 池州市| 巨鹿县| 龙岩市| 新沂市| 罗山县| 竹北市| 长子县| 通辽市| 富宁县| 务川| 禄劝| 蓬安县| 西充县| 海安县| 常宁市| 太谷县| 惠东县| 景东| 天镇县| 江都市| 花垣县| 延长县| 宕昌县| 新竹县| 沅陵县| 潼南县| 泌阳县| 抚顺县| 贵定县| 临海市| 黄山市| 平原县| 枣阳市| 建始县| 大田县|