COJ0989 WZJ的資料結構(負十一)

2022-05-09 19:02:23 字數 1962 閱讀 6909

[coj0989]wzj的資料結構(負十一)

試題描述

給出以下定義:

1.若子串行[l,r]的極差(最大值-最小值)<=m,則子串行[l,r]為乙個均勻序列。

2.均勻序列[l,r]的權值為sum(l,r)即序列的元素和。

現在給你乙個長度為n的整數序列a,請你求出權值前k大的均勻序列,輸出k行為它們的權值。

輸入

第一行為兩個整數n,m,k。

第二行為n個整數ai。

輸出

輸出k行,第i行為第i大的均勻序列的權值。

輸入示例

9310

5135

8669

10

輸出示例

29

2521

2019

1915

1413

12

資料規模及約定

1<=n,k<=100000

0<=|ai|,m<=10^9

保證原序列至少有k個均勻序列

題解

如果確定了乙個區間的左端點 x,那麼顯然對於均勻序列 [x, y],y 一定在區間 [l, r] 內。於是我們記狀態 (x, l, r, v) 表示左端點為 x,右端點在 [l, r] 內,且最大的均勻序列權值為 v,那麼我們可以預處理出對於所有的 i,(i, i, r, v) 這個狀態,把它扔進堆裡,然後每從堆頂取乙個元素 (x, l, r, v),我們可以用 rmq 找到最優的右端點 p(即 s[p] - s[x-1] = v,s 為字首和),使得 p 在 [l, r] 中,那麼就輸出這個 v,然後把 (x, l, p - 1, v') 和 (x, p + 1, r, v'') 放入堆中(其中 v' 和 v'' 都可以由求區間內最大字首和得到),進行 k 次即可。

#include #include #include #include #include #include #include #include #include #include #include using namespace std;

const int buffersize = 1 << 16;

char buffer[buffersize], *head, *tail;

inline char getchar()

return *head++;

}int read()

while(isdigit(c))

return x * f;

}#define maxn 100010

#define maxlog 21

#define ll long long

int n, m, k;

ll s[maxn], a[maxn];

ll mx2[maxlog][maxn];

int mx[maxlog][maxn], mn[maxlog][maxn], log[maxn], mxp[maxlog][maxn];

void rmq_init()

int qmn(int l, int r)

struct node

} ;priority_queue q;

int r[maxn];

int main() );

} for(int i = 1; i <= n; i++) if(!r[i]) r[i] = r[i-1];

for(nl = 1; nl <= n; nl++) );

// printf("%d %d %lld\n", nl, r[nl], tmp);

} while(k--) );

if(p < u.r) q.push((node)); }

return 0;

}

COJ1013 WZJ的資料結構(十三)

這道題有這樣乙個解法 首先把邊依次加到圖中,若當前這條邊與圖中的邊形成了環,那麼把這個環中最早加進來的邊彈出去 並將每條邊把哪條邊彈了出去記錄下來 ntr i j,特別地,要是沒有彈出邊,ntr i 0 這個顯然是可以用lct來弄的對吧。然後對於每個詢問,我們的答案就是對l r中ntr小於l的邊求和...

COJ0985 WZJ的資料結構(負十五)

coj0985 wzj的資料結構 負十五 試題描述 chx有乙個問題想問問大家。給你乙個長度為n的數列a,請你找到兩個位置l,r,使得a l a l 1 a r 中沒有重複的數,輸出r l 1的最大值。以上是附中聯賽加試的一道題。wzj覺得這道題太水了,改了改題目 wzj有乙個問題想問問大家。給你乙...

COJ 1003 WZJ的資料結構(三)ST表

wzj的資料結構 三 難度級別 b 執行時間限制 3000ms 執行空間限制 51200kb 長度限制 2000000b 試題描述 請你設計乙個資料結構,完成以下功能 給定乙個大小為n的整數組a,m次詢問。每次詢問給你i,j兩個引數,求ai至aj中最大的數。輸入第一行為兩個正整數n,m。第二行為n個...