|
今天我很闲,所以真的去实现了一下,用的是golang。 golang并不算是优秀到能跟上思维速度的语言,甚至连基础集合类和内存池都要自己造。 这一白天,我写了三种实现,分别是:
在我的i7-13700K工作站上,没有关闭windows defender,没有设置电源方案至高性能,没有深刻的GC优化,v3简陋版计算S90耗时1m25s,计算S100耗时26m15s。 用心优化一下,在5年前的配置上也可以轻松答题了。 |
啊!这题还真是得靠一步一步来试、找到问题(比如最初的 S(78) 往后每一行长度明显呈现指数级递增趋势),然后再去解决问题(收集前面的每一行长度,可以画出函数曲线,并根据曲线的走势进行预估)。 其实如果很仔细地用心思考的话,确实还是能够发现其实不用完全存储一行的字符串,而是我可以利用我这一行已经计算好的部分直接开始下一行的计算;而我这一行计算到头了以后我就可以把我不要的东西丢弃,以及我可以压缩数列的存储。 |
0xAA55 发表于 2023-5-13 12:33 是的,全程每一件事都是在优化复杂度常量,而不是指数本身。 但是每一件事都做到,就可以数十倍提升效率,这就像是在游戏里获得了一件“需求等级降低20”特效的装备,用只能计算S80的硬件提前跑出S100来。 是一件特别有成就感的事。 |
Kagamia 发表于 2023-5-13 23:16 与此同时 你也成为了全论坛拥有宅币最多的人,可喜可贺 可喜可贺 |
0xAA55 发表于 2023-5-15 19:17 他的论坛币怎么会有这么多,充值了么? |
美俪女神 发表于 2023-5-17 08:53 手动给她加的 ![]() |
|Archiver|小黑屋|技术宅的结界
( 滇ICP备16008837号 )|网站地图
GMT+8, 2025-5-11 19:23 , Processed in 0.037020 second(s), 30 queries , Gzip On.
Powered by Discuz! X3.5
© 2001-2025 Discuz! Team.