1. 程式人生 > >hiho第十九周

hiho第十九周

典型的線段樹單點更新及區間查詢

程式碼如下:

#include <bits/stdc++.h>
#define maxn 1000010
using namespace std;
struct tree{
    int left, right;
    int min;
} tree[maxn * 4];
int a[maxn];
void build( int id, int l, int r){
    tree[id].left = l;
    tree[id].right = r;
    if ( l == r){
        tree[id].min = a[l];
    }
    else{
        int mid = ( l + r) / 2;
        build( id * 2, l, mid);
        build( id * 2 + 1, mid + 1, r);
        tree[id].min = min( tree[id * 2].min, tree[id * 2 + 1].min);
    }
}
void update_dot( int id, int pos, int val){
    if ( tree[id].left == tree[id].right){
        tree[id].min = val;
    }
    else{
        int mid = ( tree[id].left + tree[id].right) / 2;
        if ( pos <= mid)    update_dot( id * 2, pos, val);
        else    update_dot( id * 2 + 1, pos, val);
        tree[id].min = min( tree[id * 2].min, tree[id * 2 + 1].min);
    }
}
int query_min( int id, int l, int r){
    if ( tree[id].left == l && tree[id].right == r)
        return tree[id].min;
    else{
        int mid = ( tree[id].left + tree[id].right) / 2;
        if ( r <= mid)  return query_min( id * 2, l, r);
        else if ( l > mid)  return query_min( id * 2 + 1, l, r);
        else    return min( query_min(id * 2, l, mid), query_min( id * 2 + 1, mid + 1, r));
    }
}
int main()
{
	int n, q, x, y, z;
	
	scanf( "%d", &n);
	for ( int i = 1; i <= n; i++){
		scanf( "%d", &a[i]);
	}	
	build( 1, 1, n);
	scanf( "%d", &q);
	while ( q--){
		scanf( "%d%d%d", &x, &y, &z);
		if ( x == 0){
			printf( "%d\n", query_min( 1, y, z));
		}
		else
			update_dot( 1, y, z);
	}
	return 0;
} 


相關推薦

hiho

典型的線段樹單點更新及區間查詢程式碼如下: #include <bits/stdc++.h> #define maxn 1000010 using namespace std; struc

#OSG+VS#

寫在前面: 一晃眼又過去一個月,上個月的這個時候已經到新疆了,時間飛逝,你又成長了多少。 斷了一個月,沒有堅持寫下去的原因有二:一是這個月每週一和週五都沒有來公司,在做另一個專案;二是自己的原因咯。停

LeetCode演算法題

題目名稱:6. ZigZag Conversion 題目難度:Medium 題目描述: The string “PAYPALISHIRING” is written in a zigzag pattern on a given number of rows

我的工作週記——

時間:2010.12.27~2010.12.31 大概星期三、四的時候,突然感覺自己怎麼也學習不進去了。於是向領導調休了一天,再加上元旦假期,總共有4天時間,可以利用這個假期好好休息,度過自己工作和學習的“倦怠期”。 放假期間,參加了我們學校在深圳的校友聚會,認識了不少朋友

工作報告(2014.6.30~7.6)

1.本週完成的任務:      1.完成了課程設計。      2.完成了專案的基本的要求  2.未完成的任務:      1.專案的介面的一個特效做得不夠好,然後介面感覺很差,沒有美感。 3.下週計劃:     1.完成實驗室佈置的任務首先     2.開始對本學期學習

實訓-銀行系統

/* *Copyright (c) 2014, 煙臺大學計算機學院 *All rights reserved. *檔名稱:main.cpp *作者:高贊 *完成日期: 2015 年 7 月 14 日 *版本號:v1.0 * *問題描述:在基礎的銀行系統上進行

Leetcode演算法習題

376. Wiggle Subsequence A sequence of numbers is called a wiggle sequence if the differences between successive numbers strictl

hihor日記:hiho一下

http://hihocoder.com/contest/hiho59/problem/1 題意分析 給定一個單執行緒程式執行的記錄,包含有每個函式啟動和結束的時間。判定該份記錄是否錯誤,主要的錯誤包含: 記錄中的時間不是嚴格遞增的 一個函式的結束時間比啟動時間更早 記錄中一個函

hihoCoder之hiho一下 解題

題目1 : HIHODrinking Game 時間限制:10000ms 單點時限:1000ms 記憶體限制:256MB         Little Hi and Little Ho are playing adrinking game called HIHO. The

hiho一下 第二(最小堆優化Prim)

AC程式碼: #include <bits/stdc++.h> using namespace std; const int maxn = 1e5 + 5; const int Mod = 1e9 + 7; const int INF = 0x

2019 八// 開發筆記

重新 開發筆記 ica ide cat str 開發經驗 存在 終端 崩潰啊。。。寫了好幾天的博客又不小心把瀏覽器關了。這是重寫的第三遍了。以後一定記住即時發布文章!!!只能勉強回一下了 2019.2.25 八九周的都寫這裏了。終端連接服務器連不上了,是因為服務器重啟了。W

JAVA學習課(java程序的異常處理 (二))

num 函數 錯誤 style col 編譯失敗 return [] java 異常處理的捕捉形式: 這是能夠對異常進行針對性處理的方式 六、try、catch的理解 詳細格式: try { //須要被檢測異常的代碼 } catch(異常類 變量)//改變量用

數據庫作業

數據 logs alt .com http 第十一周作業 images log 技術 數據庫第十一周作業

plecs仿真

技術 速度 images ges img .cn idt 積分 nbsp 1、比例控制仿真 比例系數為2,仿真結果如下圖,速度由123rad/s變為121rad/s 2、比例積分控制仿真 調節參數 仿真結果,可以看出轉速無靜差 第十一周plecs仿真

PLECS—模型仿真——作業

display font 上下 部分 比例 http src img 一周 1. 直流電機單閉環調速系統比例控制仿真 (1)整體電路圖 (2)控制部分電路圖 (3)參數設置 (4)仿真結果 附件:鏈接:http://pan.baidu.com/s/1

項目三-max帶來的沖突

watermark html mes name 實例化 定義函數 項目 names nbsp 分析以下程序出現的編譯錯誤,給出解決的方案。 #include<iostream> using namespace std; //定義函數模板 template&l

分布式技術追蹤 2017年

pla 如何 距離 無法 演變 什麽是 雲平臺 架構流程 增加 分布式系統實踐 1. BigData-‘基於代價優化’究竟是怎麽一回事? http://dwz.cn/5Vq8T8 摘要: 很多同學應該都有認識, SQL的join操作很可能是性能殺手, 如果寫的不好, 性能可

201521123116 《java程序設計》學習總結

textfile objects test tput bsp cti 目的 字節 指定 1. 本周學習總結 1.1 以你喜歡的方式(思維導圖或其他)歸納總結多流與文件相關內容。 2. 書面作業 Q1.字符流與文本文件:使用 PrintWriter(寫),BufferedR

學習進度表

wid 安卓 小時 top 網頁 左右 進度表 團隊 了解 第十二周學習進度表 時間 第十二周 所花時間 8個小時左右 代碼量 400行左右 博客量 6篇 了解到的知識點 開始團隊軟件的開發,安卓開發系統。以及網頁

oj刷題——Problem M: C++習題 矩陣求和--重載運算符

des fcm 輸出 content 運算符 reserve int 習題 tor Description 有兩個矩陣a和b,均為2行3列。求兩個矩陣之和。重載運算符“+”,使之能用於矩陣相加(如c=a+b)。 重載流插入運算符“<&l