一些题

Cheat

首先建出sam。
答案显然具有单调性,考虑二分答案,可以通过dp来check。
\(f_{i}\)表示当前匹配到第i个字符,最大能够匹配的字符数。
设二分的值为\(k\),一个显然的暴力是\(f_{i}=max(f_{j}+i-j+1)\)\(j\)\(i\)能够匹配,\(i>=j-k\)。匹配的过程可以在广义后缀自动机上实现。
但是这个过程复杂度过高,考虑优化。首先可以发现对于某个位置,向前能够匹配的长度是一定的,可以预处理出来,在后缀自动机上跑,失配跳fa即可实现\(O(n)\)预处理。
再看,这个dp的转移过程具有单调性,因此可以用单调队列优化。
\(O(len*loglen)\)
你的名字

首先考虑68分暴力,对询问串建出sam,能够预处理出来每个位置能够贡献的本质不同子串数。将询问串放在\(S\)的sam上跑,能够处理出来每个位置匹配的最长长度,那么这个位置对于答案的贡献就是\(len_{x}-max(len_{fa},len_{匹配})\)
对于任意位置的询问,与上面的区别是,匹配的过程变得无法继续了。可以用可持久化线段树合并预处理出每个sam上每个点的endpos集合,匹配过程中只要判断当前节点是否存在特定区间的endpos就可以继续完成匹配。
需要注意的是,在匹配的过程中,不能一旦失配就立刻跳fa,因为当前匹配长度可能不存在合法的endpos,然而当前节点的另一长度可能合法,因此需要先\(len--\),直到长度达到父亲节点的\(len\)才能跳。匹配仍然是线性的。
DZY Loves Math

化一化式子,发现最后只需要求这个东西:
\[g(x)=\sum\limits_{i|x} f(i)\mu(\frac{x}{i})\]
暴力求似乎(?)过不了,所以我们考虑线筛。
首先只有\(\mu(x)\)只有不含平方因子的时候不为0,所以\(f(i)=f(x)\)\(f(i)=f(x)-1\)
考虑分情况讨论:
\[\begin{aligned} g(x)&=\sum\limits_{i|x}f(i)\mu(\frac{x}{i})\\ &=f(x)\sum\limits_{i|x且f(i)=f(x)}\mu(\frac{x}{i})+(f(x)-1)\sum\limits_{i|x且f(i)==f(x)-1}\mu(\frac{x}{i})\\ &=f(x)\sum\limits_{i|x}\mu(\frac{x}{i})-\sum\limits_{i|x且f(i)==f(x)-1}\mu(\frac{x}{i})\\ \end{aligned} \]
可以发现,第一项全都是0,因此只需要考虑第二项。
\(x=\prod p_i^{c_i}\),将x的所有质因子分为两部分,一种是\(c_i=f(x)\)的,其他是另一种。
可以发现,如果存在第二种,那么由于选第二种质因子时奇偶情况相同,\(g(x)=0\)
否则第一部分每个质因子的指数都要为1才能满足条件,那么根据第一部分含有的质因子种数即可确定\(g(x)\)的取值。
hdu6363 bookshelf

记两个结论:
\(gcd(fib_x,fib_y)=fib_{gcd(x,y)}\)
\(gcd(x^i-1,x^j-1)=x^{gcd(i,j)}-1\)
然后可以用挡板法算出贡献,直接容斥即可。
DZY Loves Math IV
由于n很小,所以我们可以枚举i,令\(S(n,m)=\sum\limits_{i=1}^{m}{\varphi(ni)}\)
一个结论,当i的质因子集合是j的子集时,有:\(\varphi(ij)=i\varphi(j)\)
考虑\(i=\prod p_i^{c_i}\),\(x=\prod p_i\),\(y=\frac ix\)
\[\begin{aligned} S(i,m)&=y*\sum\limits_{j=1}^{m}{\varphi(xj)}\\ &=y*\sum\limits_{j=1}^{m}\varphi(\frac {x}{gcd(x,j)})*\varphi(j)*gcd(x,j)\\ &=y*\sum\limits_{j=1}^{m}\varphi(\frac {x}{gcd(x,j)})*\varphi(j)*\sum\limits_{k|x且k|j}\varphi(k)\\ &=y*\sum\limits_{j=1}^{m}\varphi(j)\sum\limits_{k|x且k|j}\varphi(\frac {x}{k})\\ &=y*\sum\limits_{j|x}\varphi(\frac xj)\sum\limits_{k=1}^{\lfloor \frac mj \rfloor}\varphi(kj)\\ &=y*\sum\limits_{j|x}\varphi(\frac xj)S(j,\lfloor \frac mj \rfloor )\\ \end{aligned}\]
于是可以递归求解。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章