背景
花神是神,一大癖好就是嘲諷大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...