亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

hihocoder #1077 RMQ問題再臨-線段樹

2019-11-10 19:19:58
字體:
來源:轉載
供稿:網友

#1077 : RMQ問題再臨-線段樹

時間限制:10000ms單點時限:1000ms內存限制:256MB

輸入

每個測試點(輸入文件)有且僅有一組測試數據。

每組測試數據的第1行為一個整數N,意義如前文所述。

每組測試數據的第2行為N個整數,分別描述每種商品的重量,其中第i個整數表示標號為i的商品的重量weight_i。

每組測試數據的第3行為一個整數Q,表示小Hi總共詢問的次數與商品的重量被更改的次數之和。

每組測試數據的第N+4~N+Q+3行,每行分別描述一次操作,每行的開頭均為一個屬于0或1的數字,分別表示該行描述一個詢問和描述一次商品的重量的更改兩種情況。對于第N+i+3行,如果該行描述一個詢問,則接下來為兩個整數Li, Ri,表示小Hi詢問的一個區間[Li, Ri];如果該行描述一次商品的重量的更改,則接下來為兩個整數Pi,Wi,表示位置編號為Pi的商品的重量變更為Wi

對于100%的數據,滿足N<=10^6,Q<=10^6, 1<=Li<=Ri<=N,1<=Pi<=N, 0<weight_i, Wi<=10^4。

輸出

對于每組測試數據,對于每個小Hi的詢問,按照在輸入中出現的順序,各輸出一行,表示查詢的結果:標號在區間[Li, Ri]中的所有商品中重量最輕的商品的重量。

樣例輸入
103655 5246 8991 5933 7474 7603 6098 6654 2414 884 60 4 90 2 101 4 70090 5 61 3 79491 3 1227樣例輸出
24148847474
題目其實很簡單,就一個簡單的線段樹結構,可是寫完之后提交答案總是超時,這是超時的代碼:
#include<iostream>#include<algorithm>#define MAX 1000000using namespace std;struct NODE{	int low, high;	int value;}node[4*MAX];void Init(int num, int low, int high){	if (low == high)	{		node[num].high = node[num].low = low;		cin >> node[num].value;		return;	}	int mid = (low + high) >> 1;	node[num].high = high;	node[num].low = low;	Init(2 * num, low, mid);	Init(2 * num+1, mid + 1, high);	node[num].value = min(node[num * 2].value,node[num * 2 + 1].value);	return;}void update(int num, int pos, int revise){	if (node[num].low == node[num].high)	{		node[num].value = revise;return;	}	int mid = node[num * 2].high;	if (mid >= pos)		update(num * 2, pos, revise);	else		update(num * 2 + 1, pos, revise);	node[num].value = min(node[num * 2].value,node[num * 2 + 1].value);}int query(int num, int low, int high){//	if (node[num].revise) update(num, node[num].pos, node[num].revise);	if (node[num].low == low&&node[num].high == high)		return node[num].value;	int mid = node[num * 2].high;	if (mid >= high)		return query(num * 2, low, high);	if (mid<low)		return query(num * 2 + 1, low, high);	int le = query(num * 2, low, mid);	int ri = query(num * 2 + 1, mid + 1, high);	return min(le,ri);}int main(){	int n;	cin >> n;	Init(1, 1, n);	int m;	cin >> m;	for (int i = 0;i<m;i++)	{		int a, b, c;		cin >> a >> b >> c;		switch (a)		{		case 0:cout << query(1, b, c)<<endl;break;		case 1:update(1, b, c);break;		}	}	return 0;
}
最后想到可能是數據量太大,輸入輸出比較多,而C++的cin,cout效率又比較低,所以改成了scanf和PRintf,結果真的過了,所以在競賽中,輸入輸入較多的話,還是用scanf和printf比較好。
#include<iostream>#include<cstdio>#include<algorithm>#define MAX 1000000using namespace std;struct NODE{	int low, high;	int value;}node[4*MAX];void Init(int num, int low, int high){	if (low == high)	{		node[num].high = node[num].low = low;		scanf("%d",&node[num].value);		return;	}	int mid = (low + high) >> 1;	node[num].high = high;	node[num].low = low;	Init(2 * num, low, mid);	Init(2 * num+1, mid + 1, high);	node[num].value = min(node[num * 2].value,node[num * 2 + 1].value);	return;}void update(int num, int pos, int revise){	if (node[num].low == node[num].high)	{		node[num].value = revise;return;	}	int mid = node[num * 2].high;	if (mid >= pos)		update(num * 2, pos, revise);	else		update(num * 2 + 1, pos, revise);	node[num].value = min(node[num * 2].value,node[num * 2 + 1].value);}	int query(int num, int low, int high){	if (node[num].low == low&&node[num].high == high)		return node[num].value;	int mid = node[num * 2].high;	if (mid >= high)		return query(num * 2, low, high);	if (mid<low)		return query(num * 2 + 1, low, high);	int le = query(num * 2, low, mid);	int ri = query(num * 2 + 1, mid + 1, high);	return min(le,ri);}int main(){	int n;	scanf("%d", &n);	Init(1, 1, n);	int m;	scanf("%d", &m);	for (int i = 0;i<m;i++)	{		int a, b, c;		scanf("%d%d%d", &a, &b, &c);		switch (a)		{		case 0:printf("%d/n", query(1, b, c));break;		case 1:update(1, b, c);break;		}	}	return 0;}

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
57pao国产成人免费| 一区二区三区在线播放欧美| 久久天天躁狠狠躁夜夜躁2014| 久久久久久久久久久久久久久久久久av| 欧美性猛交xxxx乱大交3| 久久精品99无色码中文字幕| 91免费精品视频| 日韩精品在线观看视频| 91九色综合久久| 国产日韩欧美一二三区| 中文字幕久久精品| 欧美一区二区三区艳史| 亚洲毛茸茸少妇高潮呻吟| 国产亚洲精品一区二555| 成人动漫网站在线观看| www.久久久久久.com| 亚洲视频综合网| 中文字幕免费精品一区| 欧美国产日韩中文字幕在线| 日韩成人网免费视频| 国产91精品久久久久久| 神马久久桃色视频| 亚洲女人被黑人巨大进入| 日韩精品免费看| 国产精品视频一区二区高潮| 日本免费在线精品| 国产欧美va欧美va香蕉在线| 九九视频这里只有精品| 久久久这里只有精品视频| 亚洲黄页网在线观看| 91av免费观看91av精品在线| 清纯唯美亚洲激情| 久久久91精品国产一区不卡| 91精品国产777在线观看| 日韩欧美成人精品| 欧美理论片在线观看| 日韩精品视频在线播放| 91av视频在线观看| 亚洲91精品在线观看| 国产一区二区久久精品| 成人午夜黄色影院| 国内精品久久久久影院 日本资源| 久久精品国产成人| 一区二区三区国产在线观看| 亚洲欧美日韩直播| 国产精品极品尤物在线观看| 久久国产精品电影| 亚洲精品久久久久| 亚洲国产成人在线播放| 亚洲精品日韩av| 欧美日韩国产中文字幕| 欧美黑人视频一区| 久久精品成人欧美大片| 久久久久久久久久久亚洲| 久久久久久久久亚洲| 国产午夜精品免费一区二区三区| 性色av一区二区三区在线观看| 国产精品96久久久久久| 国产精品91久久久久久| 欧美激情aaaa| 日韩在线观看免费高清完整版| 久久久91精品国产| 亚洲国产精品国自产拍av秋霞| 国产精品91久久久| 91嫩草在线视频| 最近2019年手机中文字幕| 中文字幕日韩欧美精品在线观看| 亚洲аv电影天堂网| 日韩av电影在线播放| 亚洲天堂日韩电影| 国产精品成人av性教育| 国产精品免费在线免费| 亚洲成人激情在线观看| 久久午夜a级毛片| 在线日韩日本国产亚洲| 欧美大片在线影院| 在线观看日韩www视频免费| 91日本在线观看| 欧美成人精品在线| 亚洲成人中文字幕| 超薄丝袜一区二区| 亚洲一级片在线看| 欧美中文字幕视频| 136fldh精品导航福利| 日韩中文字幕视频在线观看| 欧美xxxx18性欧美| 欧美性猛xxx| 久久精品国产96久久久香蕉| 国产精品久久久一区| 91视频九色网站| 亚洲一区二区在线播放| 欧美亚洲国产视频| 国产精品老牛影院在线观看| 日本19禁啪啪免费观看www| 欧美性极品xxxx做受| 欧美性一区二区三区| 最近2019中文字幕大全第二页| 欧美成人在线免费视频| 欧美激情视频网| 欧美寡妇偷汉性猛交| 美女福利精品视频| 亚洲人成伊人成综合网久久久| 国产精品欧美日韩| 久久色精品视频| 欧美激情精品久久久久久| 中文在线资源观看视频网站免费不卡| 久久久久久av| 国产精品免费在线免费| 欧美激情免费在线| 久久精品99久久香蕉国产色戒| 日韩69视频在线观看| 精品国产91乱高清在线观看| 亚洲wwwav| 91爱爱小视频k| 国产成人精品久久久| 91香蕉嫩草神马影院在线观看| 亚洲国产第一页| 亚洲精品中文字幕女同| 久久天堂av综合合色| 视频在线一区二区| 日韩欧美在线免费观看| 国产午夜精品视频| 日韩精品日韩在线观看| 日韩免费av在线| 精品性高朝久久久久久久| 欧美日韩亚洲成人| 91精品国产自产在线老师啪| 久久夜色精品国产| 国产国产精品人在线视| 欧美俄罗斯乱妇| 精品国产一区久久久| 国产精品自拍偷拍| 精品国产一区二区三区久久久狼| 欧美xxxx14xxxxx性爽| 亚洲视频一区二区三区| 91久久精品国产91性色| 色偷偷偷亚洲综合网另类| 日韩美女在线播放| 2019av中文字幕| 亚洲国产精品人久久电影| 欧美理论电影网| 亚洲国产欧美在线成人app| 亚洲自拍中文字幕| 国产精品久久久久91| 九九九热精品免费视频观看网站| 精品国产精品三级精品av网址| 疯狂欧美牲乱大交777| 亚洲美女av在线播放| 日韩理论片久久| 97国产成人精品视频| 尤物tv国产一区| 日韩中文字幕第一页| 中文字幕在线看视频国产欧美| 亚洲免费影视第一页| 国产第一区电影| 精品欧美国产一区二区三区| 久久这里有精品视频| 九九九久久国产免费| 中文字幕久热精品在线视频| 国内精品久久久久影院 日本资源| 亚洲欧洲av一区二区| 亚洲综合大片69999| 亚洲成人亚洲激情| 在线看日韩欧美|