高階資料結構(2)、st表
一維:
#include
using namespace std;
const
int maxn=
1e5+7;
int st[maxn][20
],a[maxn]
,n;void
init
(int n)
intquery
(int l,
int r)
intmain()
return0;
}
二維:
#include
using namespace std;
const
int maxn=
1e5+7;
int st1[
251]
[251][
20],st2[
251]
[251][
20],a[251][
251]
,n;///st[i][j][k] 在(i,j)處,長度為2^k的矩形
void
init
(int n)
intquery1
(int l,
int r,
int k)
intquery2
(int l,
int r,
int k)
intmain()
a - balanced lineup
題解:(st表裸題)
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;
const
int maxn=
1e5+7;
int st[maxn][20
],st1[maxn][20
],a[maxn]
,n,m;
void
init
(int n)
intquery
(int l,
int r)
intmain()
return0;
}
c - frequent values
題意:給你乙個大小為n的非遞減整型陣列,有q次查詢,問[l,r]**現次數最多的數出現的次數
題解:注意左端點需要單獨處理,不滿足字首和!!!!
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;
const
int maxn=
1e6+7;
int st[maxn][50
],st1[maxn][50
],a[maxn]
,n,m;
int f[maxn]
;void
init
(int n)
intquery
(int l,
int r)
intmain()
}}
f - cornfields
題解:二維st表裸題
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;
const
int maxn=
1e5+7;
int st1[
251]
[251][
20],st2[
251]
[251][
20],a[251][
251]
;///st[i][j][k] 在(i,j)處,長度為2^k的矩形
void
init
(int n)
intquery1
(int l,
int r,
int k)
intquery2
(int l,
int r,
int k)
intmain()
return0;
}
d - a magic lamp
題意:給定一串數字,取走m個元素,使得剩下的數字按原來順序組合在一起得到的數字最小。
題解:我們可以把題目轉化為這樣乙個模型:從a[1]、a[2]、……、a[n] n個數中選出n-m個數,使得組成的數最小。
一、使用rmq,設原數字長為n,那麼除去m個數字後還剩n-m個數字。
(1)因為有n-m個數字,那麼在1到m+1位置中最小的那個數字必是結果中的第乙個數字,記錄其位置為pos
(2)然後從這個位置的下個位置pos+1開始到m+2位置的數字中最小的那個數字必定是結果中第二個數字,以此類推下去向後找。
(3)為了保證數字最小,所以要保證高位最小,還要保證數字長度滿足條件
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;
const
int maxn=
1e5+7;
int st[maxn][20
],a[maxn]
,n;string str;
intmain()
a[sum++
]=str[temp]
-'0'
; n++
; t=temp+1;
}int ans=-1
,flag=0;
for(
int i=
0;iif(flag==0)
cout<<
0
}}
暑假集訓日記Day xx
6.23 今天算是第一天吧 畢竟昨天被迫做了半天苦力 充實而豐滿的一天 上午做題 下午講題 晚上改錯 考試是原題和我會做有什麼關係嗎 早起跑操還闊以 比之前距離短就很快樂 然後練了會兒 就去吃早飯了 我好像飯量小了!晚上發現然並卵 上午就是考試唄 考試有啥好說的 考試沒啥好說的 那我在幹嘛呢 你在懷...
暑假集訓日記 8 2 搜尋
今天又是刷了一天的題。到現在腦子暈暈乎乎的。一直在乙個題上糾結。懷疑自己是不是讀錯題意了。在這個題上wa到瘋。感覺不是一道難題怎麼會這樣。我得再研究研究。總的來說今天上午有一道三維陣列的題。三維陣列的題沒有印象做過了。但是一看就想用三維陣列。乙個比較簡單的搜尋,一次就成功了。可是在輸出格式上一直錯的...
暑假集訓日記 8 5(博弈)
這是一篇沒有看完的部落格 im part ialc ombi nato rial game s 以 下簡稱i cg impartial combinatorial games 以下簡稱icg impar tial comb inat oria lgam es 以下簡稱 icg 滿足以下條件的遊戲是i...