時間限制: 1 sec 記憶體限制: 128 mb
提交: 36 解決: 12
[提交] [狀態] [討論版] [命題人:admin]
題目描述
對於乙個0/1字串,如果將這個字串0和1取反後,再將整個串反過來和原串一樣,就稱作「反對稱」字串。比如00001111和010101就是反對稱的,而1001就不是。
現在給出乙個長度為n的0/1字串,求它有多少個子串是反對稱的,注意這裡相同的子串出現在不同的位置會被重複計算。
輸入第一行乙個正整數n。
第二行乙個長度為n的0/1字串。
輸出一行乙個整數,表示原串的反對稱子串個數。
複製樣例資料
8樣例輸出11001011
7提示
對於100%的資料,1≤n≤500000。
思路:顯然符合條件的字串長度為偶數,否則中間那位取反後不可能與原串相同。
列舉前半部分最後乙個位置(1~n-1),二分長度hash即可。
#include#include#include
#include
#include
#define ull unsigned long long;
#define rep(i, a, b) for(int i = (a); i <= (b); ++ i)
#define rep(j, a, b) for(int j = (a); j <= (b); ++ j)
#define per(i, a, b) for(int i = (a); i >= (b); -- i)
const
int maxn = 5e5 + 5
;using
namespace
std;
char
str[maxn];
intn, a[maxn], b[maxn], gt;
long
long
tot;
int ha[maxn], hb[maxn], base
[maxn];
int funa(int l, int
r) int funb(int l, int
r) int
main()
tot +=gt;
}cout
}
雜湊和雜湊表 門票
時間限制 1 sec 記憶體限制 128 mb 提交 26 解決 2 提交 狀態 討論版 命題人 admin 題目描述 rpk要帶msh去乙個更加神秘的地方!rpk帶著msh穿過廣場,在第1618塊磚上按下了乙個按鈕,在一面牆上隨即出現了乙個把手。rpk握住把手,開啟了一扇石質大門。他們穿過悠長而芬...
Hash和雜湊 雜湊 表
hash又稱為雜湊,是把任意長度的輸入 又叫做預對映pre image 通過雜湊演算法變成固定長度的輸出,該輸出就是雜湊值。hash演算法還有乙個特點,就是很難找到逆向規律。在同一函式下,如果兩個雜湊值是不相同的,那麼這兩個雜湊值的原始輸入也是不同的。hash演算法又被稱為雜湊演算法。雖然被稱為演算...
雜湊表 雜湊表
一 定義 雜湊表 hash table,也叫雜湊表 是根據關鍵碼值 key value 而直接進行訪問的資料結構。也就是說,它通過把關鍵碼值對映到表中乙個位置來訪問記錄,以加快查詢的速度。這個對映函式叫做雜湊函式,存放記錄的陣列叫做雜湊表。雜湊表的做法其實很簡單,就是把key通過乙個固定的演算法函式...