[樹狀數組]翠湖戰爭

來源:互聯網
上載者:User

標籤:text   turn   內容   情況   namespace   天空   ret   include   維護   

翠湖戰爭

題目描述2814年,本已平靜的沙拉島再生事端。因為翠江共和國的首席魔法師發現了翠湖邊上的樹木與翠理魔法的親和度極高,於是民間的魔法工坊都開始大肆使用翠湖邊的木材來進行煉化。面對這種現象,翠江共和國的實權統治者——XXX郡主採取了不管不問的態度,默許人民繼續砍伐翠湖自然保護區中的樹木。魔法師不願看到這種情況發生,便孤身一人前往翠江瀑布頂端的祭壇,召喚出了遠古的精靈魔法師沙拉莉亞,她聽到這個訊息後,便召喚出翠湖湖區中隱居的精靈族人,建立了翠湖王國,並將翠湖中央的翠水魔晶取出,使翠江中的水不再具有魔法親和力。XXX郡主聽說了這個訊息後,大怒,讓翠江共和國的首席大將巴特爾組織了人類聯軍駕駛飛艇從天空上進攻。巴特爾曾經在的幾次沙拉島戰爭中帶領翠江軍隊屢出奇兵,便有些恃才放曠。於是他派出了mn架飛艇從天空進攻翠湖王國。他將飛艇排成n列(1<=n<=32767),每列有m架飛艇。(1<=m<=255)。他每一次會發動一個調動指令1 a b x,即從a列調動x架飛艇前往b列。但是他不知道的是,魔法師沙拉莉亞研發出了一個水晶球,她使這個水晶球可以隨時截獲巴特爾的調動指令。她希望當精靈聯軍的軍官沙拉利向水晶球發動一個詢問指令2 a b 0,即詢問在a列到b列之間(包括a,b兩列)的飛艇數量時,水晶球便會立刻給出回覆。這時,沙拉莉亞找到了你,請求你為水晶球編寫一個程式做到上述的內容。翠湖王國的存亡,就在你的手中了。輸入

第一行輸入三個數字n,m,c,分別表示飛艇的列數,每列飛艇的初始數量與雙方發出指令的總個數。

接下來的c行,每行分別輸入一個指令。資料保證第一個指令是巴特爾的調動指令,最後一個指令為沙拉利的詢問指令。

輸出

輸出共有s行(s為沙拉利發出詢問指令的個數)。每一行依序對沙拉利的一個詢問指令給出回答。

範例輸入
3 6 41 2 3 12 3 3 01 2 1 22 1 2 0
範例輸出
711
提示

 對於命令的總個數,有:

對於30%的資料,1<=c<=1023;

對於100%的資料,1<=c<=32767;

 

 

幾乎就是一道裸的模板題,艦船轉移即把前一列減去x後一列加上x,用樹狀數組維護即可owo

代碼:

#include<cstdio>#include<cstring>using namespace std; const int Maxv = 33000; int sum[Maxv], n; int lb(int x) {    return x & (-x);}int getsum(int x) {    int ans = 0;     for (int i = x; i > 0; i -= lb(i)) {        ans += sum[i];     }    return ans; }void add(int x, int y) {    for (int i = x; i <= n; i += lb(i)) {        sum[i] += y;     }}int main() {    int m, c;     scanf("%d%d%d", &n, &m, &c);     for (int i = 1; i <= n; i++) {        add(i, m);     }    while (c--) {        int t, x, y, n;         scanf("%d%d%d%d", &t, &x, &y, &n);         if (t == 1) {            add(y, n);             add(x, -n);         }        else {            printf("%d\n", getsum(y) - getsum(x - 1));        }    }    return 0; }

 

[樹狀數組]翠湖戰爭

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.