BZOJ4199 NOI2015 品酒大會

2022-05-30 19:36:12 字數 2103 閱讀 3072

一年一度的「幻影閣夏日品酒大會」隆重開幕了。大會包含品嚐和趣味挑戰兩個環節,分別向優勝者頒發「首席品酒家」和「首席獵手」兩個獎項,吸引了眾多品酒師參加。在大會的晚餐上,調酒師rainbow調製了 n 杯雞尾酒。這 n 杯雞尾酒排成一行,其中第 i 杯酒 (1≤i≤n) 被貼上了乙個標籤 s_i ,每個標籤都是 26 個小寫英文本母之一。設 str(l,r) 表示第 l 杯酒到第 r 杯酒的 r-l+1 個標籤順次連線構成的字串。若 str(p,po)=str(q,qo) ,其中 ≤p≤po≤n,1≤q≤qo≤n,p≠q,po-p+1=qo-q+1=r ,則稱第 p 杯酒與第 q 杯酒是「 r 相似」的。當然兩杯「 r 相似」(r>1)的酒同時也是「 1 相似」、「 2 相似」、……、「 (r-1) 相似」的。在品嚐環節上,品酒師freda輕鬆地評定了每一杯酒的美味度,憑藉其專業的水準和經驗成功奪取了「首席品酒家」的稱號,其中第 i 杯酒 (1≤i≤n) 的美味度為 a_i 。現在rainbow公布了挑戰環節的問題:本次大會調製的雞尾酒有乙個特點,如果把第 p 杯酒與第 q 杯酒調兌在一起,將得到一杯美味度為 a_p a_q 的酒。現在請各位品酒師分別對於 r=0,1,2,?,n-1 ,統計出有多少種方法可以選出 2 杯「 r 相似」的酒,並回答選擇 2 杯「 r 相似」的酒調兌可以得到的美味度的最大值。

輸入檔案的第1行包含1個正整數 n ,表示雞尾酒的杯數。

第 2 行包含乙個長度為 n 的字串 s ,其中第 i 個字元表示第 i 杯酒的標籤。

第 3 行包含 n 個整數,相鄰整數之間用單個空格隔開,其中第 i 個整數表示第 i 杯酒的美味度 a_i 。

n=300,000 |a_i |≤1,000,000,000

輸出檔案包括 n 行。第 i 行輸出 2 個整數,中間用單個空格隔開。

第 1 個整數表示選出兩杯「 (i-1)" " 相似」的酒的方案數,

第 2 個整數表示選出兩杯「 (i-1) 相似」的酒調兌可以得到的最大美味度。

若不存在兩杯「 (i-1) 相似」的酒,這兩個數均為 0 。

10

ponoiiipoi

2 1 4 7 4 8 3 6 4 7

45 56

10 56

3 32

0 00 0

0 00 0

0 00 0

0 0

把串反過來做一遍字尾自動機,\(parent\)樹就是原串的字尾樹。

那麼問題就很簡單了,直接在字尾樹上\(dp\)就好了。

注意到有負數值,記乙個最大值乙個最小值,然後每次更新答案就是最大值相乘和最小值相乘的\(\max\)。

注意\(ans2\)初值要設成\(-\infty\)。

#includeusing namespace std;

void read(int &x)

#define ll long long

void print(int x)

void write(int x)

const int maxn = 1e6+10;

const ll inf = 2e18;

char s[maxn];

int cnt=1,qs=1,lstp=1,n;

int tr[maxn][26],val[maxn],sz[maxn],par[maxn],ml[maxn],a[maxn];

int p=lstp,np=++cnt;lstp=np;ml[np]=ml[p]+1,sz[np]=1,val[np]=v;

for(;p&&tr[p][x]==0;p=par[p]) tr[p][x]=np;

if(!p) return par[np]=qs,void();

int q=tr[p][x];

if(ml[p]+1}int head[maxn],tot;

ll ans1[maxn],ans2[maxn],mn[maxn],mx[maxn];

struct edgee[maxn<<1];

void add(int u,int v) ,head[u]=tot;}

void ins(int u,int v)

void dp(int x,int fa)

}int main()

bzoj4199 Noi2015 品酒大會

一年一度的 幻影閣夏日品酒大會 隆重開幕了。大會包含品嚐和趣味挑戰兩個環節,分別向優勝者頒發 首席品酒家 和 首席獵手 兩個獎項,吸引了眾多品酒師參加。在大會的晚餐上,調酒師 rainbow 調製了 n 杯雞尾酒。這 n 杯雞尾酒排成一行,其中第 i 杯酒 1 le i le n 被貼上了乙個標籤 ...

品酒大會 BZOJ 4199

品酒大會 問題描述 輸入格式 輸出格式 樣例輸入 10ponoiiipoi 2 1 4 7 4 8 3 6 4 7 樣例輸出 45 56 10 56 3 32 0 00 0 0 00 0 0 00 0 0 0 資料範圍 題解 根據題意可得 r相似 也是 r 1相似 那麼我們只要求出了所有最大為 r ...

BZOJ 4197 Noi2015 壽司晚宴

為了慶祝 noi 的成功開幕,主辦方為大家準備了一場壽司晚宴。小 g 和小 w 作為參加 noi 的選手,也被邀請參加了壽司晚宴。在晚宴上,主辦方為大家提供了 n 1 種不同的壽司,編號 1,2,3,n 1,其中第 i 種壽司的美味度為 i 1 即壽司的美味度為從 2 到 n 現在小 g 和小 w ...