随笔分类 - 题解
摘要:好题。。。开阔思路 把每个前缀异或和依次插入$01trie$,插之前找一个最优的(就是从高位向低位贪心,尽量走相反方向)看看能不能更新答案,此时相当于找到了区间右端点不超过某个点$r$的最大或和$f[r]$。对于后缀也同理来一波上面的操作,然后就找到了区间左端点端点不少于某个点$l$的最大异或和。所
阅读全文
摘要:建一颗$trie$树(当然你哈希也资瓷),边插边更新,看看搜到最底时有多少个字符串,然后更新。 2019.06.13
阅读全文
摘要:先把两个串能匹配模式串的位置找出来,然后标记为$1$(标记在开头或末尾都行),然后对标记数组求一个前缀和,这样可以快速查到区间内是否有完整的一个模式串。 然后二分子串(答案)的长度,每次把长度为$md$的串扔到哈希表里,查一波匹不匹配。 2019.06.12
阅读全文
摘要:昨天卡了一天常数。。。然后发现吧$unsigned\space long\space long$改成$unsigned$就可以过了$qwq$ 先把每一行的前缀哈希求出,然后再竖着把每个前缀哈希值哈希起来(相当于二维前缀哈希) 注意横着和竖着哈希的$Base$不能相同 2019.06.12
阅读全文
摘要:自己简直是傻死了。。。对于位置想错了。。。 二分出来的是LCP长度$+1$,即每一次二分出来的最后一个点都是失配的,而就算失配也会跳过这个点;所以当$k<=3$且模式串$s2$的指针$>len2$时,即跳过了$<=3$个点的位置且指针$>len2$时,都是可行的;当$k==4$且模式串$s2$指针$
阅读全文
摘要:之前就写过一遍,今天却写挂了,查了半天发现是数组名写错啦$qwq$ 观察到$K$很小,所以使得我们可以哈希(怎么什么都能哈希$qwq$)。我们把长度小于等于$50$的子串扔到哈希表里,并统计出现次数,注意每次合并和分离时,只加入或删除与断开点距离小于等于$50$的;因为其他子串长度太长,或是已经在前
阅读全文
摘要:注意到插入次数挺少的,于是每次暴力重构,然后哈希+二分 2019.06.10
阅读全文
摘要:好吧我觉得是脑子,别人觉得是套路$qwq$ 这道题相当于是求除了$u,v$两点互相连接,所连的点相同的点对$(u,v)$ 我们首先每个点一个随机权值,对于$u$点记为$w[u]$,然后记与$u$点相连的点的异或和为$hsh[u]$ 分类: 对于第一种情况,直接枚举每条边上的两点就行了;对于第二种情况
阅读全文
摘要:看见某大佬在做,决定补一发题解$qwq$ 首先跑出最大生成树(注意有可能不连通),然后我们要求的就是树上两点间路径上的最小边权。 我们用倍增的思路跑出来$w[u][j]$,表示$u$与的它$2^j$的祖先路径上的最小边权(其实是为了配合$lca$),然后求$lca$时顺便记一下最小边权。 码风清奇别
阅读全文
摘要:注意到这个在哈希时要考虑循环同构。。。所以哈希函数是$\sum a_i+\prod a_i$ 如果发现有哈希值相等的了就$ck$一下。 最后$ck$时可以用最小表示法的知识提高效率,,,先咕着。 2019.06.10
阅读全文
摘要:这道题可以$O(nlogn)$,当然也可以$O(n)$做啦$qwq$ $O(nlogn)$的思路是枚举每个回文中心,通过哈希预处理出前缀和后缀哈希值备用,然后二分回文串的长度,具体的就是判断在长度范围内,前缀哈希值和后缀哈希值是否相等。 还有一个$Manacher$算法,可以在$O(n)$时间里解决
阅读全文
摘要:首先向颜神犇致敬。。。还是自己太菜,又不仔细思考,上来就翻题解$qwq$ 首先有一种贪心方法:即,$ans=2*max(dirty_i)$ 证明:若现在的答案为$ans$,考虑一个新的数$x$对答案的贡献 然后有一种很强的做法 再次致敬。。。在$OI$中如果不能仔细思考,也只能$retire$了 2
阅读全文
摘要:又因为调一道水题而浪费时间。。。不过细节太多了$qwq$,暴露出自己代码能力的不足$QAQ$ 设$d=gcd(a,b)$,这题不是显然先解出来特解,即解出 $\frac{a}{d}x_0+\frac{b}{d}y_0=d$,中的$x_0,y_0$ 然后根据 $x=\frac{c}{d}x_0+k\f
阅读全文
摘要:又一道。。。分数和取模次数成正比$qwq$ 求:$\sum_{i=1}^N\sum_{j=1}^Mlcm(i,j)$ 原式 $=\sum_{i=1}^N\sum_{j=1}^M\frac{i*j}{gcd(i.j)}$ $=\sum_{d=1}^{N}\sum_{i=1}^{\lfloor\frac
阅读全文
摘要:刚学的欧拉反演(在最后)就用上了,挺好$qwq$ 题意:求$\sum_{i=1}^{N}\sum_{j=1}^{M}(2*gcd(i,j)-1)$ 原式 $=2*\sum_{i=1}^{N}\sum_{j=1}^{M}gcd(i,j)\space-m*n$ $=2*\sum_{i=1}^{N}\su
阅读全文
摘要:设$f(d)=\sum_{i=1}^N\sum_{j=1}^M[gcd(i,j)==d],\\F(n)=\sum_{n|d}f(d)=\lfloor \frac{N}{n} \rfloor \lfloor \frac{M}{n} \rfloor$ 则$f(n)$ $=\sum_{n|d}\mu(\f
阅读全文
摘要:第一道莫比乌斯反演。。。$qwq$ 设$f(d)=\sum_{i=1}^n\sum_{j=1}^m[gcd(i,j)==d]$ $F(n)=\sum_{n|d}f(d)=\lfloor \frac{N}{n} \rfloor \lfloor \frac{M}{n} \rfloor$ $f(n)=\s
阅读全文
摘要:心路历程:震惊,我竟然得了$90$分!!。。。康康数据。。。奥。。(忽然有了邪恶的卡数据的想法) 于是把$for(int \space i=0;i<n;++i)$改成了$for(int \space i=n-1;i>0;--i) $ 然后,我$90$~ 然后,我开了$O2$,$A$了$OvO$。。。
阅读全文
摘要:分两种情况:$k|n$和$k$不整除$n$ 如果$k|n$,那么长度为$n$的二进制数就能被恰好分成$n/k$个块;所以若某个数长度是$x$个块,由于每个块内能填不同的$2^k-1$个数,那么就有$C_{2^k-1}^{x}$ 所以整除时答案是$\sum_{i=2}^{n/k} \space C_{
阅读全文
摘要:神仙。。。。 当时以为是,$x$代表$1$,$y$代表$0$,所以不能过$y=x$的路径数。。。结果不会。。。 然后康题解。。。ヾ(。`Д´。)竟然向右上是$1$,向右下是$0$。。。。 所以现在就是不能过$y=-1$; 所以我们可以这样想:如果有非法路径的话,那么就把他第一次与$y=-1$交点与起
阅读全文

浙公网安备 33010602011771号