为什么理论复杂度正确但是跑得这么慢

P4514 上帝造题的七分钟

亻尔女子。 时间复杂度就是理论的东西,不分“理论时间复杂度”和“实际时间复杂度”。 跑不过去应该是常数有点大,尝试卡常(这里的卡常是指复杂度决定项的系数,不是常数项)。 另外我怎么觉得你的复杂度是不会低于 $o(n^2)$ 的?
by Terrible @ 2023-11-04 14:56:26


@[Terrible](/user/195942) 啊???你确定不低于 $O(n^2)$ 但是后面也有对的啊
by return_TLE @ 2023-11-04 15:00:55


@[return_TLE](/user/912241) `const int p=2048*2048*8+5;`你空间就开了 $n^2$ 个元素,不是妥妥的 $o(n^2)$ 吗?
by Terrible @ 2023-11-04 15:02:13


线段树常数太大了,得优化一下线段树。
by Terrible @ 2023-11-04 15:03:56


@[Terrible](/user/195942) 感觉我的代码慢的原因主要是没有存每个点的范围,导致每次操作都要重复计算。但是要是开始的时候就存一遍的话内存要爆
by return_TLE @ 2023-11-04 15:04:05


@[Terrible](/user/195942) 但是n=2048,可以忽略不计了,影响不是特别大
by return_TLE @ 2023-11-04 15:05:11


@[Terrible](/user/195942) 时间复杂度写错了,应该是 $O(n^2+mlog^2n)$
by return_TLE @ 2023-11-04 15:06:14


我的代码在自己造的数据上跑了20s 离谱
by return_TLE @ 2023-11-04 15:18:48


@[return_TLE](/user/912241) 有可能您这么写单次操作复杂度都不全是 $O(\log^2n)$ 的,况且就算复杂度正确卡常也很折磨的,还是用树状数组搞吧。 出题人是只想让你用树状数组过了。 https://www.cnblogs.com/TheRoadToTheGold/p/8151375.html
by Terrible @ 2023-11-04 15:23:41


@[Terrible](/user/195942) 应该确实是让用树状数组过的 还是谢谢你 不过我单次操作应该确实是$log^2n$的
by return_TLE @ 2023-11-04 15:26:35


| 下一页