上一页 1 ··· 46 47 48 49 50 51 52 53 54 ··· 65 下一页
摘要: 注意到n很小,考虑枚举i。现在要求的是f(n,m)=Σφ(in) (i=1~m)。显然当n没有平方因子时,φ(in)=φ(i)·φ(n/gcd(i,n))·gcd(i,n)。利用φ*1=id又可得φ(i,n)=φ(i)·Σφ(n/d) (d|gcd(i,n))。改为枚举d就可以得到f(n,m)=Σφ 阅读全文
posted @ 2018-09-24 10:41 Gloid 阅读(166) 评论(0) 推荐(0)
摘要: 因为不会SAM,考虑SA。将所有串连起来并加分隔符,每次考虑计算以某个位置开始的子串有多少个合法。 对此首先二分答案,找到名次数组上的一个区间,那么只需要统计有多少个所给串在该区间内出现就可以了。这是一个主席树的经典问题,对每个数找到上次出现位置扔进去即可。这样就做到O(nlog2n)了。 可以进一 阅读全文
posted @ 2018-09-23 19:05 Gloid 阅读(264) 评论(0) 推荐(0)
摘要: 直接维护选k个子段时的最优解似乎也可以做,然而复杂度是O(nk2logn),显然跑不过。 考虑一种费用流做法。序列里每个点拆成入点和出点,源连入汇连出,入点和出点间连流量1费用ai的边,相邻点出点向入点连流量1费用0的边,整体限流k。 直接跑当然还不如暴力。观察一下这个做法是在干啥:每次选择费用最大 阅读全文
posted @ 2018-09-23 00:30 Gloid 阅读(419) 评论(0) 推荐(0)
摘要: 二维的dp非常显然,但这也没有什么优化的余地了。 注意到最后的方案中只有产生贡献的位置是有用的,剩下的部分可以在该范围内任意选取。 所以我们考虑设f[i]为i号位最后产生贡献的答案,则f[i]=max{f[j]+1} (i-j>=a[i]-a[j],a[i]>a[j])。 观察这个限制,即为i-a[ 阅读全文
posted @ 2018-09-22 16:38 Gloid 阅读(219) 评论(0) 推荐(0)
摘要: 容易发现这是一个有各种玄妙性质的完全背包计数。 对于每个质数,将其选取个数写成ax+b的形式,其中x=S/pi,0<b<x。那么可以枚举b的部分提供了多少贡献,多重背包计算,a的部分直接组合数即可。多重背包计数可以前缀和优化。 阅读全文
posted @ 2018-09-22 15:22 Gloid 阅读(232) 评论(0) 推荐(0)
摘要: 考虑对于每一个x有多少个合法解。得到ax+by=c形式的方程。如果gcd(x,y)|c,则a在0~y-1范围内的解的个数为gcd(x,y)。也就是说现在所要求的是Σ[gcd(x,P)|Q]*gcd(x,P)。 对这个式子套路地枚举gcd,可以得到Σdφ(P/d) (d|gcd(P,Q))。质因子间相 阅读全文
posted @ 2018-09-21 22:21 Gloid 阅读(275) 评论(0) 推荐(0)
摘要: 显然当x中没有相邻的1时该式成立,看起来这也是必要的。 于是对于第一问,数位dp即可。第二问写出dp式子后发现就是斐波拉契数列,矩阵快速幂即可。 阅读全文
posted @ 2018-09-21 18:22 Gloid 阅读(200) 评论(0) 推荐(0)
摘要: 一通正常的莫比乌斯反演后,我们只需要求出g(n)=Σf(d)*μ(n/d)的前缀和就好了。 考虑怎么求g(n)。当然是打表啊。设n=∏piai,n/d=∏pibi 。显然若存在bi>1则这个d没有贡献。考虑bi为0和1两种情况。如果只看ai最小的质因子的选取情况,会发现大部分情况下其是0还是1,对f 阅读全文
posted @ 2018-09-20 22:27 Gloid 阅读(167) 评论(0) 推荐(0)
摘要: 将串反过来就变成查询前缀了。考虑建一棵可持久化trie,查询时二分答案,均摊一下复杂度即为O(mlogn)。 阅读全文
posted @ 2018-09-20 19:56 Gloid 阅读(173) 评论(0) 推荐(0)
摘要: 容易发现只要图中有非链部分则无解。剩下就非常简单了。 阅读全文
posted @ 2018-09-20 19:07 Gloid 阅读(115) 评论(0) 推荐(0)
上一页 1 ··· 46 47 48 49 50 51 52 53 54 ··· 65 下一页