BZOJ 2124 等差子串行 線段樹 hash

2021-08-14 14:27:56 字數 976 閱讀 1162

題目傳送門

等等……這題好像在**做過……

哦,codeforces 452f,原題哈……

為什麼我還是不會做啊……

就當是複習一遍吧,這種想法還是挺好的。

p.s.wa了兩發,錯在了updata上……好像updata這個地方好容易出錯啊。

附上ac**:

#include 

#include

#include

using

namespace

std;

typedef

unsigned

int uint;

const

int n=1e4+10;

int ti,n,a[n],len[n<<2],c,lst,ans;

uint sd[n],lh[n<<2],rh[n<<2],h1,h2,hash;

inline

char nc(void)

inline

void read(int &a)

#define lt (k<<1)

#define rt (k<<1|1)

#define mid (l+r>>1)

inline

void build(int k,int l,int r)

inline

void updata(int k)

inline

void change(int k,int l,int r,int w)

inline

void queryl(int k,int l,int r,int ql,int qr)

inline

void queryr(int k,int l,int r,int ql,int qr)

int main(void)

}puts(ans?"n":"y");

}return

0;}

BZOJ2124 等差子串行

挺厲害的題 我們考慮當前加入了第i個數,為x,那麼我們可以維護一下哪個數出現過,出現過為1,沒出現為0,那麼加入x的時候我們只需要判斷以x為中心的極長子串是否是回文串即可 用乙個樹狀陣列維護兩個方向的雜湊值即可 include include include include include incl...

bzoj 2124 等差子串行

description 給乙個1到n的排列,詢問是否存在1 p1 p2 p3 p4 p5 plen n len 3 使得ap1,ap2,ap3,aplen是乙個等差序列。input 輸入的第一行包含乙個整數t,表示組數。下接t組資料,每組第一行乙個整數n,每組第二行為乙個1到n的排列,數字兩兩之間用...

BZOJ 2124 等差子串行

給乙個1到n的排列,詢問是否存在 3 plen 使得ap1,ap2,ap3,aplen是乙個等差序列。輸入的第一行包含乙個整數t,表示組數。下接t組資料,每組第一行乙個整數n,每組第二行為乙個1到n的排列,數字兩兩之間用空格隔開。對於每組資料,如果存在乙個等差子串行,則輸出一行 y 否則輸出一行 n...