BZOJ2124 等差子串行

2021-07-27 15:43:42 字數 743 閱讀 2212

挺厲害的題

我們考慮當前加入了第i個數,為x,那麼我們可以維護一下哪個數出現過,出現過為1,沒出現為0,那麼加入x的時候我們只需要判斷以x為中心的極長子串是否是回文串即可

用乙個樹狀陣列維護兩個方向的雜湊值即可

#include#include#include#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;

#define maxn 10010

#define maxm 1010

#define ll long long

#define eps 1e-8

#define mod 1000000007

#define inf 1000000000

#define lb(x) x&-x

int n;

int x;

ll c1[maxn],c2[maxn];

ll bas=131;

ll mi[maxn];

void change(ll *c,int x,ll cv)

}ll ask(ll *c,int x)

return re;

}int main(){

int i;

int tmp;

scanf("%d",&tmp);

mi[0]=1;

for(i=1;i

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...

bzoj2124 等差子串行

傳送門 題目 給乙個1到n的排列,詢問是否存在1 p1 3 使得ap1,ap2,ap3,aplen是乙個等差序列。input 輸入的第一行包含乙個整數t,表示組數。下接t組資料,每組第一行乙個整數n,每組第二行為乙個1到n的排列,數字兩兩之間用空格隔開。n 10000,t 7 output 對於每組...