藍(lán)橋杯 算法訓(xùn)練 操作格子

一道非常直白的線段樹(shù)題目,甚至不需要慵懶操作233涡驮,如果你不知道什么是線段樹(shù)欧瘪,可以去看我的這篇文章:線段樹(shù)入門(mén)

問(wèn)題描述

給定一個(gè)n個(gè)頂點(diǎn)题篷,m條邊的有向圖(其中某些邊權(quán)可能為負(fù),但保證沒(méi)有負(fù)環(huán))屡穗。請(qǐng)你計(jì)算從1號(hào)點(diǎn)到其他點(diǎn)的最短路(頂點(diǎn)從1到n編號(hào))贴捡。

輸入格式

第一行兩個(gè)整數(shù)n, m。

接下來(lái)的m行鸡捐,每行有三個(gè)整數(shù)u, v, l栈暇,表示u到v有一條長(zhǎng)度為l的邊。

輸出格式

共n-1行箍镜,第i行表示1號(hào)點(diǎn)到i+1號(hào)點(diǎn)的最短路源祈。

樣例輸入

3 3
1 2 -1
2 3 -1
3 1 2

樣例輸出

-1
-2

數(shù)據(jù)規(guī)模與約定

對(duì)于10%的數(shù)據(jù),n = 2色迂,m = 2香缺。

對(duì)于30%的數(shù)據(jù),n <= 5歇僧,m <= 10图张。

對(duì)于100%的數(shù)據(jù),1 <= n <= 20000诈悍,1 <= m <= 200000祸轮,-10000 <= l <= 10000,保證從任意頂點(diǎn)都能到達(dá)其他所有頂點(diǎn)侥钳。

#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
#define MAXN 100005
int arr[MAXN];
struct tr{
    int l, r, mx, sum;
}Tr[MAXN << 2];
void push(int d){
    Tr[d].mx = max(Tr[d << 1].mx, Tr[d << 1 | 1].mx);
    Tr[d].sum = Tr[d << 1].sum + Tr[d << 1 | 1].sum;
}
void build(int l, int r, int d){
    Tr[d].l = l, Tr[d].r = r;
    if(l == r){
        Tr[d].mx = arr[l], Tr[d].sum = arr[l];
        return;
    }
    int mid = (l + r) >> 1, lc = d << 1, rc = d << 1 | 1;
    build(l, mid, lc);
    build(mid + 1, r, rc);
    push(d);
}
void modify(int d, int pos, int v){
    if(Tr[d].l == Tr[d].r && Tr[d].l == pos){
        Tr[d].mx = v, Tr[d].sum = v;
        return;
    }
    int mid = (Tr[d].l + Tr[d].r) >> 1, lc = d << 1, rc = d << 1 | 1;
    if(pos <= mid)modify(lc, pos, v);
    else modify(rc, pos, v);
    push(d);
}
int querymx(int l, int r, int d){
    if(Tr[d].l == l && Tr[d].r == r)return Tr[d].mx;
    int mid = (Tr[d].l + Tr[d].r) >> 1, lc = d << 1, rc = d << 1 | 1;
    if(r <= mid)return querymx(l, r, lc);  // [L, [l, r], mid, R]
    else if( l > mid )return querymx(l, r, rc);  // [L, mid, [l, r], R]
    else return max(querymx(l, mid, lc), querymx(mid + 1, r, rc));  //[L, [l, mid, r], R]
}
int querysum(int l, int r, int d){
    if(Tr[d].l == l && Tr[d].r == r)return Tr[d].sum;
    int mid = (Tr[d].l + Tr[d].r) >> 1, lc = d << 1, rc = d << 1 | 1;
    if(r <= mid)return querysum(l, r, lc);
    else if( l > mid )return querysum(l, r, rc);
    else return querysum(l, mid, lc)+ querysum(mid + 1, r, rc);
}
int main(){
    int n, m, type, p1, p2;
    scanf("%d%d", &n, &m);
    for(int i = 1; i <= n; i++)scanf("%d", &arr[i]);
    build(1, n, 1);
    for(int i = 0; i < m; i++){
        scanf("%d%d%d", &type, &p1, &p2);
        if(type == 1)modify(1, p1, p2);
        else if(type == 2)printf("%d\n", querysum(p1, p2, 1));
        else printf("%d\n", querymx(p1, p2, 1));
    }
    return 0;
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末适袜,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子舷夺,更是在濱河造成了極大的恐慌苦酱,老刑警劉巖售貌,帶你破解...
    沈念sama閱讀 211,948評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異疫萤,居然都是意外死亡颂跨,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,371評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén)扯饶,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)恒削,“玉大人,你說(shuō)我怎么就攤上這事帝际÷” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 157,490評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵蹲诀,是天一觀的道長(zhǎng)斑粱。 經(jīng)常有香客問(wèn)我,道長(zhǎng)脯爪,這世上最難降的妖魔是什么则北? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,521評(píng)論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮痕慢,結(jié)果婚禮上尚揣,老公的妹妹穿的比我還像新娘。我一直安慰自己掖举,他們只是感情好快骗,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,627評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著塔次,像睡著了一般方篮。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上励负,一...
    開(kāi)封第一講書(shū)人閱讀 49,842評(píng)論 1 290
  • 那天藕溅,我揣著相機(jī)與錄音,去河邊找鬼继榆。 笑死巾表,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的略吨。 我是一名探鬼主播集币,決...
    沈念sama閱讀 38,997評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼翠忠!你這毒婦竟也來(lái)了鞠苟?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,741評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎偶妖,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體政溃,經(jīng)...
    沈念sama閱讀 44,203評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡趾访,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,534評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了董虱。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片扼鞋。...
    茶點(diǎn)故事閱讀 38,673評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖愤诱,靈堂內(nèi)的尸體忽然破棺而出云头,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 34,339評(píng)論 4 330
  • 正文 年R本政府宣布,位于F島的核電站困鸥,受9級(jí)特大地震影響慨飘,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜抛虫,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,955評(píng)論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧谣殊,春花似錦、人聲如沸牺弄。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,770評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)势告。三九已至蛇捌,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間培慌,已是汗流浹背豁陆。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,000評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留吵护,地道東北人盒音。 一個(gè)月前我還...
    沈念sama閱讀 46,394評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像馅而,于是被迫代替她去往敵國(guó)和親祥诽。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,562評(píng)論 2 349

推薦閱讀更多精彩內(nèi)容