**調了一下午這道題,bzoj還必須要人把讀入讀完。
這道題關鍵是用樹狀陣列來實現求類似等比數列的東東。
還有就是要想到轉換成字串比較是否是回文。
詳細就懶得說了0 0,直接上**。
#include
#include
#include
#include
#define n 10010
using namespace std;
int t,n,x,power[n];
int const mod=1000000007;
struct abcd
void add(int
pos)
intq(int pos)
int query(int l,int r)
};abcd a1,a2;
int main()
if(flag==1)printf("y\n");
else
printf("n\n");
}return
0;}
BZOJ2124 等差子串行(樹狀陣列 雜湊)
容易想到一種暴力的做法 列舉中間的位置,設該位置權值為x,如果其兩邊存在權值關於x對稱即合法。問題是如何快速尋找這個東西是否存在。考慮僅將該位置左邊出現的權值標1。那麼若在值域上若關於x對稱的兩權值標號不同,說明他們的位置分別在兩側,也就說明存在等差子串行。那麼只需要判斷整體是否相同,雜湊即可。雜湊...
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的排列,數字兩兩之間用...