Codeforces 264B Good Sequence (DP)

探讨了求解最长非互质子序列的算法,介绍了从TLE到优化至O(nlgn)的思路转变,利用质因子记录与更新策略,实现高效求解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题意:给你一个严格递增序列,让你取出其中一个子串,使得子串中任意两个相邻的数不互质,求最长的酱紫的子串。
TLE的思路:O(n)求出所有素数,对于每一个素数扫一遍序列,把有这个质因子的数和他之前最近的有这个质因子的数连一条边,然后最后扫一遍序列,如果连边了就用边的另一个端点更新当前点。因为素数还是很多的,时间复杂度接近O(n^2),爆炸
题解看来的思路:有点像O(nlgn) 求最长上升子序列,记录素数p[i],用f[i]表示以因子p[i]结尾的子串最长的长度。处理出每个数的所有质因子(在线性筛里面记录一个pre[i]),扫一遍数列,对于某个数的所有因子取max,再把所有因子的f[]更新为max+1。最后答案是f[]值取maximum。玄学思路,就像LIS用f[i]存长度为i的最小值一样,省掉了用所有1~i-1的数更新本身的时间。还要多多领悟才是。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值