博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【20181024T2】小C的序列【GCD性质+链表】
阅读量:6835 次
发布时间:2019-06-26

本文共 398 字,大约阅读时间需要 1 分钟。

【错解】

一眼不可做啊

哎分治?

算不了啊

真的是,打暴力走人

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

你可能感兴趣的文章
Spark-SparkSQL深入学习系列六(转自OopsOutOfMemory)
查看>>
用委托者模式实现的多类型Adapter
查看>>
Django模板和变量的使用
查看>>
用图片拼接图片 C#
查看>>
判断系统是不是 XP
查看>>
RDF和RDFS是什么
查看>>
X61 U盘安装系统
查看>>
C代码
查看>>
php URLEncode() / php URLEncode函数 php urldecode...
查看>>
knn 分类
查看>>
weblogic Java反序列化漏洞测试和解决
查看>>
svn高可用集群搭建
查看>>
设计模式6大原则:里氏置换原则
查看>>
实现HTTPS系列第五弹(终章)之【通过OpenSSL实现HTTPS】
查看>>
Linux防火墙
查看>>
如何通过一个值查找到值所在的SQL数据库表
查看>>
Python学习—面向对象学习上
查看>>
3.9 对称三位素数
查看>>
Oracle临时表空间使用分析
查看>>
傻瓜式的ARP处理方法
查看>>