【20181024T2】小C的序列【GCD性质+链表】

题面

【错解】

一眼不可做啊

哎分治?

算不了啊

真的是,打暴力走人

20pts

(事实上,还有20pts是随机数据,加个小小的特判就可以)

【正解】

首先,从l开始往后gcd最多只有O(log)种取值,并且是单调减的

所以我们可以二分log次边界,用线段树维护区间gcd,可以做到\(O(Nlog_N^4)\)

事实上,gcd多算了也没有影响,所以可以用st表优化到\(O(Nlog_N^3)\)

然而上面的做法和正解没有一点关系

我们发现每次都会二分很多重复的,显得很浪费农民伯伯种操作次数很辛苦的

我们还发现,如果我们倒着添加,每次的段实际上是之前合并起来的

所以我们可以用链表维护O(1)删除,每个元素维护它到下一个之前的gcd,开个map记录答案就可以了

复杂度\(O(Nlog_N^2)\)

代码

转载于:https://www.cnblogs.com/lstoi/p/9845947.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值