HDU3973 字串雜湊 線段樹

2021-10-02 18:10:11 字數 1440 閱讀 9218

即給你乙個母串,和n

nn個字串,m

mm次操作,每次操作有兩種:1,詢問母串中l到r位置的字串是否在n

nn個字串**現過;2,修改母串中x

xx位置的字母

字串雜湊套線段樹裸題(注意查詢操作,對於類似的區間合併,常用該種查詢方式)

還有乙個坑,**中有說

#include

//字串雜湊套線段樹-ac

#include

#include

#include

#define ll unsigned long long

#define m 100009

using

namespace std;

struct treetr[m*4]

;const ll h=31;

int n,q,t_;

setma;

ll mi[m]

,has;

char s1[20]

,t[m]

,c[20

],s[m*20]

;void

pushup

(int k,

int mid)

void

build

(int k,

int l,

int r)

int mid=

(l+r)

>>1;

build

(k<<

1,l,mid)

;build

(k<<1|

1,mid+

1,r)

;pushup

(k,mid);}

void

update

(int k,

int pos,

int val)

int mid=

(tr[k]

.l+tr[k]

.r)>>1;

if(pos<=mid)

update

(k<<

1,pos,val)

;else

update

(k<<1|

1,pos,val)

;pushup

(k,mid);}

ll query

(int k,

int ql,

int qr)

signed

main()

scanf

("%s"

,t);

build(1

,0,strlen

(t)-1)

;scanf

("%d"

,&q)

;for

(int i=

1;i<=q;i++

)else}}

return0;

}

hdu2920 字串雜湊

模式串中 把它分成一截截,當某一截在s串中多個位置能找到匹配,找第乙個匹配點,貪心 因為當中間有 可以利用它跳過一些字元,當遇到 先跳過乙個字元,其他的一截截貪心去找到匹配位置,若最後剩餘偶數個字元,則match 第一截和最後一截如果是非 和 必須嚴格匹配 找來的雜湊寫法 include inclu...

HDU 1800 字串雜湊

從n個數中,最少能分出幾個單調遞增序列。水題。就是找到n個數中出現次數最多的次數。只是n個數範圍有30個十進位制位,需要當成字串處理,這就用到了字串雜湊。include using namespace std const int maxn 3005 const int mod 100007 stru...

Kefa and Watch 字串雜湊線段樹

給定乙個長度為n,且由數字組成的字串,有兩種操作 把 l,r 區間的數字都變成c 詢問 l,r 區間的數字是否可以 以d為長度作為迴圈節.如12345123,可以以長度為5的12345作為迴圈節,只不過最後的123不是完整的迴圈節 拿到這個題,很快啊,我們就發現是乙個區間修改和區間詢問的問題,最先想...