Loj 6285 數列分塊入門 9

2022-03-02 18:32:41 字數 765 閱讀 8416

思路:離散化處理下就好了,具體解釋在**裡、

ps:小新新別看了,你學不會的

實現**:

#includeusing

namespace

std;

const

int m = 1e5 + 10

;int n,block,idx,a[m],bl[m],f[510][510

],val[m],cnt[m];

vector

ve[m];

void pre(int x)

}int query(int l,int r,int x)

int query(int l,int

r)

if(bl[l] !=bl[r])

}return

ans;

}map

mp;intmain()

a[i] = mp[a[i]]; //

離散化 ve[a[i]].push_back(i); //

將每個a[i]出現的下標存到a[i]對應的vecotr裡

}

for(int i = 1;i <= n;i ++) bl[i] = (i - 1)/block + 1

;

for(int i = 1;i <= bl[n];i ++) pre(i); //

預處理每乙個塊

for(int i = 1;i <= n;i ++)

return0;

}

loj 6285 數列分塊入門 9

題目 傳送門 簡要題意 給出乙個長為 n 的數列,以及 n 個操作,操作涉及詢問區間的最小眾數。題解 很開心,最後一題.分塊刷的非常高 惡 興 心 據說原題是一道超級大難題.還是先做做簡單的吧.首先用dp求出第i塊到第j塊的最小眾數.然後神奇的stl開始來襲.依舊分情況走一波.對於我們需要處理的其中...

LOJ6285 數列分塊入門9(分塊)

昨天對著 看了一晚上 然後今天終於在loj上過了 數列分塊入門9題撒花 然後相當玄學 塊的大小調成 sqrt 會tle,改成150就過了 嘖然後就是用map離散化之後的值不能直接比較大小 鍋鍋鍋 include include include include include include usin...

LOJ 6285 數列分塊入門 9 區間眾數

如果只查詢眾數的個數,完全可以莫隊,加數時容易維護眾數的數量,刪除數時,眾數的數量要麼減1,要麼不變,只需再開乙個標記陣列維護眾數的數量即可 根據陳立傑 區間眾數解題報告 實現了下面兩種解法 解法一 塊數分成sqrt n 超時了,150可以過 分塊真毒瘤 pragma gcc optimize 2 ...