即給你乙個母串,和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不是完整的迴圈節 拿到這個題,很快啊,我們就發現是乙個區間修改和區間詢問的問題,最先想...