某日,百無聊賴的卿學姐開啟了某11區的某魔幻遊戲
在這個魔幻的遊戲裡,生活著乙個美麗的公主,但現在公主被關押在了魔王的城堡中。
英勇的卿學姐拔出利刃衝向了拯救公主的道路。
走過了荒野,翻越了高山,跨過了大洋,卿學姐來到了魔王的第一道城關。
在這個城關面前的是魔王的精銳部隊,這些士兵成一字排開。
卿學姐的**每次只能攻擊乙個士兵,並造成一定傷害,卿學姐想知道某時刻從ll到rr這個區間內,從開始到現在累計受傷最嚴重的士兵受到的傷害。
最開始每個士兵的受到的傷害都是0
standard input
第一行兩個整數n,qn,q表示總共有nn個士兵編號從11到nn,和qq個操作。
接下來qq行,每行三個整數,首先輸入乙個tt,如果tt是11,那麼輸入p,xp,x,表示卿學姐攻擊了pp這個位置的士兵,並造成了xx的傷害。如果tt是22,那麼輸入l,rl,r,表示卿學姐想知道現在[l,r][l,r]閉區間內,受傷最嚴重的士兵受到的傷害。
1\le n \le 1000001≤n≤100000
1\le q \le 1000001≤q≤100000
1\le p \le n1≤p≤n
1\le x \le 1000001≤x≤100000
1\le l \le r \le n1≤l≤r≤n
standard output
對於每個詢問,回答相應的值
samples
input output
5 42 1 2
1 2 4
1 3 5
2 3 305
note
注意可能會爆int哦
problem id 1324
problem title 卿學姐與公主
time limit 1000 ms
memory limit 64 mib
output limit 64 mib
source 2016 uestc training for data structures
題目鏈結
為什麼用分塊,因為我現在還不會線段樹。只會暴力莽
#include using namespace std;
const int maxn = 1e5+7;
int belong[maxn], num, l[maxn], r[maxn];
int n, q, block;
long long a[maxn], max[maxn];
//num 分塊的個數
//block 塊的大小
//belong[i]表示i屬於哪一塊
//l[i]表示i這塊的左端點位置
//r[i]表示i這塊的右端點位置
void build()
r[num] = n;
for(int i = 1; i <= n; i++)
}void update(int x, int y)
long long query(int x, int y)
return ans;
}for(int i = x; i <= r[belong[x]]; i++)
for(int i = belong[x] + 1; i < belong[y]; i++)
for(int i = l[belong[y]]; i <= y; i++)
return ans;
}int main()
return 0;
}
CDOJ 1324 卿學姐與公主 分塊法
某日,百無聊賴的卿學姐開啟了某11區的某魔幻遊戲 在這個魔幻的遊戲裡,生活著乙個美麗的公主,但現在公主被關押在了魔王的城堡中。英勇的卿學姐拔出利刃衝向了拯救公主的道路。走過了荒野,翻越了高山,跨過了大洋,卿學姐來到了魔王的第一道城關。在這個城關面前的是魔王的精銳部隊,這些士兵成一字排開。卿學姐的 每...
UESTC 1292 卿學姐種花 (分塊)
題意 給出乙個長度為n的序列,m次操作,操作分為兩種 1.在x的位置上加上數y,在x 1的位置加上數y 1,以此類推,一直到n或者y為0.2.詢問x位置上數字為多少 分析 乍一看像是線段樹,但是貌似又很難用線段樹解決,主要是區間不好處理,而分塊對於這類題目有優勢,在區間上更容易計數,對於每個塊,對於...
CDOJ 1292 卿學姐種花(分塊)
思路 由於是乙個區間更新問題,而且更新的值不一樣,所以我們考慮分塊。對於乙個塊,我們維護第i塊的第乙個元素被加了多少了sum i 第i塊被更新了多少次cnt i 那麼對於乙個塊內,元素依次增加sum i 遞減cnt i 這是乙個等差數列。細節參見 include include include in...