BZOJ 3207 花神的嘲諷計畫

2021-07-31 04:27:10 字數 2073 閱讀 6576

背景

花神是神,一大癖好就是嘲諷大j,舉例如下:

「哎你傻不傻的!【hqz:大笨j】」

「這道題又被j屎過了!!」

「j這程式怎麼跑這麼快!j要逆襲了!」

……描述

這一天dj在給吾等眾蒟蒻講題,花神在一邊做題無聊,就跑到了一邊跟吾等眾蒟蒻一起聽。以下是部分摘錄:

1.「j你在講什麼!」

「我在講***!」

「哎你傻不傻的!這麼麻煩,直接***再***就好了!」

「……」

2.「j你***講過了沒?」

「……」

「那個都不講你就講這個了?哎你傻不傻的!」

「……」

dj對這種情景表示非常無語,每每出現這種情況,dj都是非常尷尬的。

經過眾蒟蒻研究,dj在講課之前會有乙個長度為n方案,我們可以把它看作乙個數列;

同樣,花神在聽課之前也會有乙個嘲諷方案,有m個,每次會在x到y的這段時間開始嘲諷,為了減少題目難度,每次嘲諷方案的長度是一定的,為k。

花神嘲諷dj讓dj尷尬需要的條件:

在x~y的時間內dj沒有講到花神的嘲諷方案,即j的講課方案中的x~y沒有花神的嘲諷方案【這樣花神會嘲諷j不會所以不講】。

經過眾蒟蒻努力,在一次講課之前得到了花神嘲諷的各次方案,dj得知了這個訊息以後欣喜不已,dj想知道花神的每次嘲諷是否會讓dj尷尬【說不出話來】。

第1行3個數n,m,k;

第2行n個數,意義如上;

第3行到第3+m-1行,每行k+2個數,前兩個數為x,y,然後k個數,意義如上;

對於每乙個嘲諷做出乙個回答會尷尬輸出『yes』,否則輸出『no』

8 5 3

1 2 3 4 5 6 7 8

2 5 2 3 4

1 8 3 2 1

5 7 4 5 6

2 5 1 2 3

1 7 3 4 5

noyes

yesyes

no題中所有資料不超過2*10^9;保證方案序列的每個數字<=n

2~5中有2 3 4的方案,輸出no,表示dj不會尷尬

1~8中沒有3 2 1的方案,輸出yes,表示dj會尷尬

5~7中沒有4 5 6的方案,輸出yes,表示dj會尷尬

2~5中沒有1 2 3的方案,輸出yes,表示dj會尷尬

1~7中有3 4 5的方案,輸出no,表示dj不會尷尬

原創 memphis

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

主席樹+hash~

(調了一下午+一晚上,各種錯誤都試了n次……tat

為什麼main函式裡面注釋了的hash方法是wa的?求大神指點!)

用hash把每個k長度的段記為乙個數,然後把這些數放到主席樹里,直接查詢就可以了~

注意:1.為了不爆unsigned long long,mid要分開求:

mid=(l>>1)+(r>>1);if((l&1) && (r&1)) mid++;

直接用mid=(l+r)>>1;是wa的。

2.範圍不能寫成(1,maxx),必須是從0開始,到inf結束,因為後面的hash可能會超過maxx,也可能為0。

3.空間開到8*10^6。

#include#includeusing namespace std;

#define ull unsigned long long

#define inf 18446744073709551615ul

int n,m,k,x,y,a[100001],tot,root[100001],cnt,c[8000001],ls[8000001],rs[8000001];

ull jin,num[100001],totnum;

int read()

while(ch>='0' && ch<='9')

return x*f;

}void build(ull l,ull r,int u,int &v,ull k)

bool cal(ull l,ull r,int u,int v,ull k)

int main()

return 0;

}

bzoj 3207 花神的嘲諷計畫

題意 給出乙個長度為n的序列,有m個詢問 每次給出乙個區間 l,r 和乙個長度為k的短序列 查詢區間中是否存在這個子串 1 n 100000,1 m 100000,1 k 20 題中所有資料不超過2 10 9 保證方案序列的每個數字 n 題解 這題我讀了好幾遍沒讀懂,看了題解才知道這問的是查詢乙個固...

bzoj3207花神的嘲諷計畫

題意 給定乙個原字串和m個詢問,每次查詢原字串 l,r 內是否包含給定字串s len s 20且len s 相同 sol 考慮hash,將原串沒len s 位hash一次放入桶中,再將每次詢問hash後在桶中查詢 感覺很像rk hash 因為每次 l,r 轉移到 l,r 1 l 1,r 都是從桶中取...

BZOJ 3207 花神的嘲諷計畫

傳送門 因為 k 是固定的,所以我們可以預處理每一段 k 個的序列的雜湊值,那麼對於詢問我們只要判斷區間內是否有此雜湊值即可 顯然主席樹維護,沒了 include include include include include using namespace std typedef unsigned...