杂题
题意
给定长度为\(n\)的环数组\(\{a\}\),求划分为每块gcd大于\(1\)
\(n\le 10^5\)
做法
若\([s+1,n]\)与\(1\)所在块相连
可以看作序列为\(\{gcd(a_{s+1...n}),a_1,s\}\),通过动态规划统计
若\([s,n]\)与\(1\)所在块相连,且\(gcd(a_{s+1...n})=gcd(a_{s...n})\),数组\(\{gcd,1,1,\cdots,s-1\}\)的划分可以通过上面得到
故仅需要\(O(logV)\)次重新计算动态规划,通过预处理,每次\(O(n)\)