P1198 [JSOI2008]最大數 [樹狀陣列]
將整個序列從200000開始倒著插入 , 然後就是樹狀陣列維護字首最大了
#include<bits/stdc++.h> #define N 200000 using namespace std; int c[N+50],m,d,ans,tot; void Up(int x,int val){for(;x<=N;x+=x&-x) c[x] = max(c[x],val);} int Q(int x){int ans=0; for(;x;x-=x&-x) ans = max(ans,c[x]); return ans;} int main(){ scanf("%d%d",&m,&d); while(m--){ char s[3]; int x; scanf("%s%d",s,&x); if(s[0]=='A'){x = (x+ans) % d; tot++;Up(N-tot,x);} if(s[0]=='Q'){ans = Q(N-tot+x-1);printf("%d\n",ans);} } return 0; }
相關推薦
P1198 [JSOI2008]最大數 [樹狀陣列]
傳送門 將整個序列從200000開始倒著插入 , 然後就是樹狀陣列維護字首最大了 #include<bits/stdc++.h> #define N 200000 using namespace std; int c[N+50],m,d,ans,tot; void Up(int
最大數【JSOI2008】【樹狀陣列】
傳送門:https://www.luogu.org/problemnew/show/P1198 一道變式樹狀陣列 區別是從末尾開始建點 其他操作沒有變 差不多就是這樣,,很水的一道題 上程式碼 #include<bits/stdc++.h> #define i
洛谷P1198 [JSOI2008]最大數(線段樹/單調棧)
題目連結: https://www.luogu.org/problemnew/show/P1198 題目描述 現在請求你維護一個數列,要求提供以下兩種操作: 1、 查詢操作。 語法:Q L 功能:查詢當前數列中末尾L個數中的最大的數,並輸出這個數的值。 限制:LL不超過當前數列的長度。(L &g
P1198 [JSOI2008]最大數 線段樹
註意 初始化 應該 長度 show pac 取模 include out 題目描述 現在請求你維護一個數列,要求提供以下兩種操作: 1、 查詢操作。 語法:Q L 功能:查詢當前數列中末尾L個數中的最大的數,並輸出這個數的值。 限制:LL不超過當前數列的長
P1198 [JSOI2008]最大數
執行 限制 bsp 答案 turn 一行 其中 span ont 題目描述 現在請求你維護一個數列,要求提供以下兩種操作: 1、 查詢操作。 語法:Q L 功能:查詢當前數列中末尾L個數中的最大的數,並輸出這個數的值。 限制:L不超過當前數列的長度。 2、
BZOJ——1012: [JSOI2008]最大數maxnumber || 洛谷—— P1198 [JSOI2008]最大數
geo target cin scrip page discus 一行 功能 des http://www.lydsy.com/JudgeOnline/problem.php?id=1012|| https://www.luogu.org/problem/show?pid
洛谷 P1198 [JSOI2008]最大數 題解
getc 遞歸 輸出 getchar() 大小 輸入輸出 span line -s 此文為博主原創題解,轉載時請通知博主,並把原文鏈接放在正文醒目位置。 題目鏈接:https://www.luogu.org/problem/show?pid=1198 題目描述 現
洛谷P1198 [JSOI2008]最大數
with 大數 最大數 fin new strong clas 復雜 resize 傳送門 題意 自己看原題啊 題解 直接建一顆有 $M$ 個節點的線段樹,然後單點修改、區間查詢最大值即可。 時間復雜度: $\mathcal O(m \mathrm{lg} m)$
[JSOI2008]最大數 --線段樹
sans 數列 reg cli 輸入輸出 整數 con color 描述 [JSOI2008]最大數 --線段樹 題目描述 現在請求你維護一個數列,要求提供以下兩種操作: 1、 查詢操作。 語法:Q L 功能:查詢當前數列中末尾L個數中的最大的數,
[BZOJ1012][JSOI2008]最大數maxnumber 線段樹
ems d+ mes n-n col for eof 維護 == 沒什麽好說的……線段樹維護區間就行了。第一次居然寫錯了,真丟人。 1 #include<cstdio> 2 #include<cstring> 3 #include<al
BZOJ-1012-[JSOI2008]最大數maxnumber(線段樹)
open can i++ max print fine 每一個 input esc Description 現在請求你維護一個數列,要求提供以下兩種操作:1、 查詢操作。語法:Q L 功能:查詢當前數列中末尾L個數中的最大的數,並輸出這個數的值。限制:L不超過當前數列
1012. [JSOI2008]最大數maxnumber【線段樹】
set end else 固定 ring nbsp ont space als Description 現在請求你維護一個數列,要求提供以下兩種操作:1、 查詢操作。語法:Q L 功能:查詢當前數列中末尾L 個數中的最大的數,並輸出這個數的值。限制:L不超過當前
1012: [JSOI2008]最大數maxnumber 線段樹
GC color 一次 pac fio 功能 pre BE geo https://www.lydsy.com/JudgeOnline/problem.php?id=1012 現在請求你維護一個數列,要求提供以下兩種操作:1、 查詢操作。語法:Q L 功能:查詢當前數列中
[JSOI2008]最大數(線段樹基礎)
clu 表示 沒有 scan 輸出結果 col def 每一個 最大 題目描述 現在請求你維護一個數列,要求提供以下兩種操作: 1、 查詢操作。 語法:Q L 功能:查詢當前數列中末尾L個數中的最大的數,並輸出這個數的值。 限制: L 不超過當前數列的長度。(L
HDU - 5324:Boring Class (CDQ分治&樹狀陣列&最小字典序)
題意:給定N個組合,每個組合有a和b,現在求最長序列,滿足a不升,b不降。 思路:三位偏序,CDQ分治。 但是沒想到怎麼輸出最小字典序,我好菜啊。 最小字典序: 我們倒序CDQ分治,ans[i]表示倒序的以i為結尾的最長序列,如果當前的ans[i]==目前最大,而且滿足序列要求,
BZOJ3110[Zjoi2013]K大數查詢(樹狀陣列+整體二分)
3110 [Zjoi2013]K大數查詢 有N個位置,M個操作。操作有兩種,每次操作如果是1 a b c的形式表示在第a個位置到第b個位置,每個位置加入一個數c如果是2 a b c形式,表示詢問從第a個位置到第b個位置,第C大的數是多少。 Input 第一行N,M接下來M行,每行形
樹狀陣列求區間最值和單點更新
題目連結:https://cn.vjudge.net/contest/66989#problem/B AC程式碼: #include<iostream> #include<string> #include<cstring> #include<cm
LNSYOJ203最大值【樹狀陣列應用】【做題報告+樹狀陣列深刻理解】
這道題是一個典型的樹狀陣列查詢有幾個比某個數大/小的數的應用 題目描述 給定NN個區間,選定一個固定整數值TT,對於一個區間[ai,bi][ai,bi]. 如果T<aiT<ai,那麼T在這個區間的得分為X, 如果T>biT>bi,那麼T在這個區間的得分為Z, 如果ai≤
樹狀陣列求區間最值
1627: 極差 Time Limit: 1 Sec Memory Limit: 128 MB [Submit][Status][Web Board] Description 還記得高中數學的統計部分的極差嗎?既然你能上zcmu計算機及其相關專業,想必計算能力是很厲害的,有一個實
P4949 最短距離(樹鏈剖分+樹狀陣列+基環樹)
傳送門 一箇中午啊…… 本來打算用仙人掌搞的,後來發現直接基環樹就可以了,把多出來的那條邊單獨記錄為\((dx,dy,dw)\),剩下的樹剖 然後最短路徑要麼直接樹上跑,要麼經過多出來的邊,分別討論就好了 因為這裡的樹剖只有單點修改和區間查詢,於是可以用樹狀陣列 //minamoto #include&l