題意
解法分塊。首先,一段區間的眾數的候選答案一定是大塊的眾數或者小塊的每乙個數,先預處理出大塊的眾數,這樣候選答案的範圍就縮小到了 n
\sqrt n
n個,然後每個再詢問區間內出現的次數,維護答案即可。
但是這樣做這題是無法通過所有測試點的,考慮優化查詢部分,可以預處理每個數在所有塊**現次數的字首o(n
n)
o(n \sqrt n)
o(nn)
,差分求出現次數,可以去掉log,時間複雜度為 o(n
n)
o(n\sqrt n)
o(nn)
。這樣比較難寫,可以嘗試玄學優化,比如修改塊的大小,把塊的大小修改為 nml
og2n
\frac}
mlog2
nn
,這題也可以卡過去。
**
#pragma region
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using
namespace std;
typedef
long
long ll;
#define rep(i, a, n) for (int i = a; i <= n; ++i)
#define per(i, a, n) for (int i = n; i >= a; --i)
namespace fastio
inline
charnc(
)}return
*p1++;}
inline
bool
blank
(char ch)
template
<
class
t>
inline
bool
r(t &x)
inline
boolr(
double
&x)if
(sign)
x =-x;return
true;}
inline
boolr(
char
*s)inline
boolr(
char
&c)return
true;}
template
<
classt,
class..
. u>
bool
r(t &h, u &..
. tmp)
#undef out_size
#undef buf_size};
// namespace fastio
using
namespace fastio;
template
<
class
t>
void_w(
const t &x)
void_w(
const
int&x)
void_w(
const
int64_t
&x)void_w(
const
double
&x)void_w(
const
char
&x)void_w(
const
char
*x)template
<
classt,
class
u>
void_w(
const pair
&x)template
<
class
t>
void_w(
const vector
&x)voidw(
)template
<
classt,
class..
. u>
voidw(
const t &head,
const u &..
. tail)
#pragma endregion
//const
int maxn =
1e5+5;
const
int maxb =
1005
;int n, q, b, a[maxn]
, b[maxn]
;int cnt[maxn]
, ans[maxb]
[maxb]
;//候選答案
vector<
int> pos[maxn]
;inline
intgetcnt
(const
int&l,
const
int&r,
const
int&x)
intquery
(int l,
int r)
}else
rep(i, idr * b, r)
}return b[num];}
intmain()
for(
int l = b; l <= n; l +
= b)
}int last =0;
while
(q--
)}
acwing249 蒲公英 分塊
題目鏈結 題目意思很簡單,給出乙個長度為n的陣列 m個查詢 每個查詢有 l r 查詢的是區間裡的眾數,如果數量相等輸出小的那個。這可怎麼做,剛開始看到這道題 懵了一會 想不到怎麼做 線段樹沒辦法維護或者是我不會維護 感覺 咋咋都不行 於是看了看書上的題解,看不懂啊 只看懂了要用分塊 於是就自己想著用...
蒲公英 分塊
在鄉下的小路旁種著許多蒲公英,而我們的問題正是與這些蒲公英有關。為了簡化起見,我們把所有的蒲公英看成乙個長度為 n 的序列a1,a2,an,其中ai為乙個正整數,表示第 i 棵蒲公英的種類編號。而每次詢問乙個區間 l,r 你需要回答區間裡出現次數最多的是哪種蒲公英,如果有若干種蒲公英出現次數相同,則...
分塊 蒲公英
include include include include define maxn 40005 using namespace std int rd return x partition section int a maxn blk maxn sizb int tmplwb maxn 離散化的輔...