杂题

题意

给定长度为\(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)\)

posted @ 2020-09-01 15:37  Grice  阅读(98)  评论(0编辑  收藏  举报