bzoj 4241 歷史研究 分塊

2021-07-10 17:49:59 字數 641 閱讀 4453

首先分成n^0.5塊,然後答案顯然是中間一整段的最大值,或者是兩端零星的部分。

那麼可以得到f[i][j]表示第i塊到第j塊的答案;然後就需要快速求出零星部分出現的次數,用乙個字首和s[i][j]表示在前i塊中j出現的次數。

離散化搞一搞。

好像莫隊也是可以的把。

ac**如下:

#include#include#include#include#include#define ll long long

#define n 100005

#define m 335

using namespace std;

int n,m,cnt,c[n],num[n],g[n],s[m][n],l[m],r[m],blg[n];

ll f[m][m]; struct nodea[n];

int read()

return x;

}bool cmp(node u,node v) else

for (i=x; i<=y; i++) g[c[i]]=0;

} printf("%lld\n",ans);

} return 0;

}

by lych

2016.3.25

bzoj4241 歷史研究 分塊

popoqqq大神的題解 分塊後,處理出mx i j 表示第i塊到第j塊的答案,cnt i j 表示前i塊數字j的個數,注意先離散化。然後每次查詢,把塊外的部分單獨處理,塊內的部分直接寫答案就可以了。include include include include include include de...

bzoj4241 歷史研究 分塊

傳送門 ioi國歷史研究的第一人 joi教授,最近獲得了乙份被認為是古代ioi國的住民寫下的日記。joi教授為了通過這份日記來研究古代ioi國的生活,開始著手調查日記中記載的事件。日記中記錄了連續n天發生的時間,大約每天發生一件。事件有種類之分。第i天 1 i n 發生的事件的種類用乙個整數xi表示...

bzoj4241 歷史研究 分塊

題目描述 ioi國歷史研究的第一人 joi教授,最近獲得了乙份被認為是古代ioi國的住民寫下的日記。joi教授為了通過這份日記來研究古代ioi國的生活,開始著手調查日記中記載的事件。日記中記錄了連續n天發生的時間,大約每天發生一件。事件有種類之分。第i天 1 i n 發生的事件的種類用乙個整數xi表...