洛谷U142342 詢問

2022-06-13 15:06:08 字數 872 閱讀 7045

隨便取乙個字母 \(a\),在字串中如果第 \(i\) 為是字母 \(a\) 我們就設為 \(1\),否則設為 \(0\)。

那麼兩個子串等價其實就是存在一種兩兩對應的方案,且在對應的區間內他們的 \(01\) 串相同。

那麼將每個字母的 \(01\) 序列 hash 一下,然後就可以 \(o(26)\) 判斷了。

時間複雜度 \(o(26n)\)。

#include using namespace std;

typedef unsigned long long ull;

const int n=200010;

const ull base1=131,base2=13331;

ull ha[3][27][n],power[3][n],h[5][27];

int n,m;

char ch;

int main()

power[1][i]=power[1][i-1]*base1;

power[2][i]=power[2][i-1]*base2;

} while (m--)

sort(h[1]+1,h[1]+27); sort(h[2]+1,h[2]+27);

sort(h[3]+1,h[3]+27); sort(h[4]+1,h[4]+27);

bool flag=1;

for (int i=1;i<=26;i++)

if (h[1][i]!=h[2][i] || h[3][i]!=h[4][i]) flag=0;

if (flag==1) printf("yes\n");

else printf("no\n");

} return 0;

}

洛谷 2709 小B的詢問

題目描述 小b有乙個序列,包含n個1 k之間的整數。他一共有m個詢問,每個詢問給定乙個區間 l r 求 c i 2 sum c i 2 c i 2 的值,其中i的值從1到k,其中c i 表示數字i在 l r 中的重複次數。小b請你幫助他回答詢問。輸入格式 第一行,三個整數n m k。第二行,n個整數...

洛谷小B的詢問(莫隊)

p2709 小b的詢問 題目描述 小b有乙個序列,包含n個1 k之間的整數。他一共有m個詢問,每個詢問給定乙個區間 l r 求sigma c i 2 的值,其中i的值從1到k,其中c i 表示數字i在 l r 中的重複次數。小b請你幫助他回答詢問。輸入輸出格式 輸入格式 第一行,三個整數n m k。...

洛谷 U6931 燈光

明天就是校園活動了,小明作為場地的負責人,將一切都布置好了。但是在活動的前幾天,校園裡的燈卻都壞掉了,無奈之下,只好再去買一批燈。但是很遺憾的是,廠家看馬上要過年了,就沒有在進貨了,現在只剩下n個發光值不同的燈,作為負責人,你需要,想辦法配出合適的燈。廠家有n盞剩下的燈,小明需要m盞燈,因為活動舉辦...