level 10
容易想到令d[i]=a[i+1]-a[i],然后[s,t]和[x,y]匹配的第三个条件可以重写成:
对任0<=i<t-s,d[s+i]+d[t+i]=0。
如果做法还不够显然的话,我们令d'[i]=-d[i],然后将d[]和d'[]分别视为字符串,问题变成:
给出串A,B,Q个询问(x,y),问A[x..y]在B中出现了多少次。
注意,出现的下标序列和[x-1,y+1]不能有交。
(请留心一下,这里是[x-1,y+1]而不是[x,y],原因是显然的。)
(当然了,d[]和d'[]要一起进行一次离散化。)
2013年01月22日 13点01分