09 2018 档案

摘要:分析 如果height数组中存在一个区间宽度为W,且区间中每个值都大于等于H。那么这个区间对应的每个后缀,有长为H的公共前缀。也就是说这个区间产生了出现次数为W+1的长度为1~H的子串。 从大小较小的height开始计算,计算大的height时减去小height的贡献统计答案即可。 代码 cpp i 阅读全文
posted @ 2018-09-19 16:58 sciorz 阅读(237) 评论(0) 推荐(0)
摘要:分析 后缀数组算法里的height数组每个区间的最小值都对应着原串的两个后缀的LCP。神奇的性质。 代码 cpp // 自己撸的SA常数还是很大 include include include using namespace std; typedef long long ll; const int 阅读全文
posted @ 2018-09-17 23:45 sciorz 阅读(159) 评论(0) 推荐(0)
摘要:分析 除了树剖没想到其他解法。 用线段树维护区间和,同时针对修改区间修改操作建立两个lazy标记,一个是$lazy_{mul}$,另一个是$lazy_{add}$,代表区间里的数都需要先乘以$lazy_{mul}$,再加上$lazy_{add}$。如果一个区间需要被重复标记,那么我们可以先把新的la 阅读全文
posted @ 2018-09-15 20:54 sciorz 阅读(187) 评论(0) 推荐(0)
摘要:分析 其实要去求的就是1 m之间与n互质的数的莫比乌斯函数之和。 这样我们可以枚举n的因数d,然后再容斥地加上(或减去)1 m之间与n的gcd为d的倍数的数的莫比乌斯函数之和。 $ ans(m,n)=\sum _{i=1}^m \mu(in) =\mu(n)\sum _{i=1}^m \mu(i)[ 阅读全文
posted @ 2018-09-13 11:54 sciorz 阅读(314) 评论(0) 推荐(0)