国产探花免费观看_亚洲丰满少妇自慰呻吟_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ā)表
主站蜘蛛池模板: 青岛市| 茶陵县| 灵石县| 衡水市| 茌平县| 米泉市| 郑州市| 太保市| 呼图壁县| 梅河口市| 渑池县| 邓州市| 涞源县| 岗巴县| 廉江市| 普陀区| 太仆寺旗| 精河县| 讷河市| 高邮市| 潜江市| 尼玛县| 两当县| 互助| 宿松县| 明水县| 通化县| 苏尼特右旗| 诏安县| 历史| 浪卡子县| 中山市| 乌海市| 遂宁市| 林甸县| 阳朔县| 卫辉市| 宁津县| 望城县| 阿克| 元阳县|