摘要: 题意是这样的,给你一个序列a[i],需要你选一段连续的序列a[i]到a[j],使得长度乘以这个段的gcd最大。一开始总是以为是各种神奇的数据结构,诶,后来才发现,机智才是王道啊。可以这样考虑,每次我对于某一个数,保存若干个值,以i为右端点的区间且gcd为某一值的时候这个区间最大的左端点位置是哪里?但是你也许会认为这样做状态会不会有点多?更新是不是n方的呢?其实不是的,因为我们可以从左到右来递推。什么意思呢?对于每一个数,它与前面构成的gcd一定不会太多(约数肯定不会太多),所以我们最多也只需要保存每一个约数为gcd的时候左边最远能够拓展的位置。其实远远不要保存每一个约数的位置,因为实际上很多的 阅读全文
posted @ 2013-11-24 22:50 092000 阅读(655) 评论(0) 推荐(0) 编辑