在此,我想探讨一下多项式全家桶应该怎么封装、封装成什么程度的问题。
我所认为的多项式全家桶应当是一种全面而又精简、快速而不冗长的一种代码块。最早看到的所谓“多项式全家桶”是 Delov 半年多前的《简单封装 Poly》。非常优雅的马蜂。确实非常优雅的马蜂,相当精简,可读性也极强,小的函数虽多但不用什么解释就能理解大致的含义。所有的多项式模板全部使用传统方式求解,毫无理解困难。然而这样有一个问题,就是效率实在不忍直视,只能是平时能用的程度,但凡稍微卡点常数感觉就会在 T 的边上徘徊的样子。而且这玩意顶多叫半家桶。
joke3579 也经常给我看他的多项式全家桶。他的多项式全家桶大概是比较主流的那种“效率至上”的东西,跑的飞快,功能方面由于他是专门搞多项式的所以自然很全。然而在拜读他的代码之后我得到了结论:这一大车指令集 + 循环展开真的是不想让人写第二遍的东西。他也说在考场上使用的 NTT 是最朴素实现的 NTT。
我一直试图在保证效率的同时解决码风不佳、代码可读性过差的问题,因此也一直尽量精简它的功能。然而随着使用频率的增加,我发现如果只是使用最为朴素的做法的话效率实在难以恭维,因此码量上也越叠越高。现在挑战多项式的代码长度就已经到了 8.1k(虽然卡进 2s 的没一个小于 10k 的),代码也很没有条理,这是我封装多项式全家桶的契机。即使我的代码仍然有很多的可优化之处,但我决定先开始完整地打包起来再进行调整。
这或许也是“实用主义”的偏差。不同的人对于实用的定义是不同的,从“比较好打出来”到“我只要打一遍以后直接搬过来用不再打了”各不相同。这往后还要涉及到生活的一些观念,不过都比较浅显就不说了。然而只从对多项式全家桶的态度并不能看出一个人的全貌,毕竟专门搞多项式的人实在有限。
我们对人的印象也是在言行中积累的。印象可以大体勾勒一个人的框架,但是不能确保“真正了解”。我和 joke3579 待了一年半,我真正了解他吗?很难说。我把关于我的许多事情都跟他透露了一些,那在我看来他确实十分了解我了。但是在他看来他是否了解我呢?也很难说。这样循环下去好像就陷入怀疑主义了。它的直接原因似乎在于人在大多数时候是具有两面性的?一个从不发言的人可能见多识广,一个很抽象的人也可能只是百无聊赖。joke3579 退役以后似乎越来越抽象了,不敢多评价。
那我对和我共处一室的人的印象呢?不知是幸运还是遗憾,我对现在的所有人的评价是“正常”。实际上这一届我不以“正常”评价的可能有四个。可能三个。大概只有一个。也可能一个也没有。这是好事,正常可以解释很多问题。区分近义词:正常和平凡。
也许把大脑放空会更好?这样一想奶头乐也不是不行。
标签:flower,封装,多项式,代码,全家,5.11,joke3579,精简 From: https://www.cnblogs.com/gtm1514/p/17392290.html