Piwry @ 2020-05-18 21:05:02
有点长,不想看的可以先看这里:我怀疑板子打错了或者题目有玄学问题,所以想知道有没有人复现了这种问题,或者能找到板子中的错误(我真的找不出了...还没法复现问题(
代码是splay,有些压行(不过同样使代码比较短)
基本上就是改几个无关紧要的代码段(如rank时是否splay),就会出现在不同的点 AC/TLE/WA 的情况
这是最后卡过的代码
这是作为基础一开始的代码
这里有一个在 TLE/AC 徘徊的例子(大概)
A1, A2, A3
代码完全一样,都开了O2,只是最后一次是 C++11
这里有一个加/不加了求某数rank时的splay导致AC ->WA/OLE的例子(大概)(OLE是我的调试代码,是检测(按理)不可能的“越界”情况的,然而不知为何输不输出完全取决求某数rank的splay(
B1, B2, B3
其他的可以去查询我的提交记录,这些情况不一定需要开O2才会出现
.
最主要的疑惑是在 WA 和 AC 间的徘徊(例子:WA, AC, 两者只差了 1.是否有调试语句 2.是否在rank splay 3.是否在pre(内部使用的查找前驱)中判定当没有元素时返回0(按理来说不会有这种情况))
这导致我严重怀疑我splay板子错了,但最后改改奇怪的部分却就过了,一开始的代码也是能过另外一道平衡树模板...
<<想要通过模板题熟练板子的我大概完全做错了(>>
by Piwry @ 2020-05-18 21:07:31
最后 WA,AC 例子的调试语句就是指单纯的是否输出调试信息...我连外面的 if
都没动(
懒得搜索我的话这里有超链接
by UltiMadow @ 2020-05-18 21:14:14
写替罪羊啊,splay最好的模板不是这个吧(
至少窝splay没过()
by Piwry @ 2020-05-18 21:19:18
@UltiMadow
啊这,我考虑写些其他的平衡树了
主要是 splay 功能太多导致我不想学其他的...
by UltiMadow @ 2020-05-18 21:25:41
@Piwry splay 慢啊()
一般用不到splay的特殊功能就尽量不写罢
splay 个人感觉挺难写的(
by Piwry @ 2020-05-18 21:32:18
@UltiMadow
啊这,我感觉挺简单的
极有可能是我没写过其他平衡树)
话说我之前还看到几篇文章说 splay 时间不会高太多来着..
by Semsue @ 2020-05-19 18:02:49
@UltiMadow 不学Splay怎么写LCT
by UltiMadow @ 2020-05-19 18:31:54
@Flying_Bird 没说不学啊,我的意思是能不用就不用(
by Semsue @ 2020-05-19 18:32:32
@UltiMadow 话说您会吗?要不来帮我调调吧(
by UltiMadow @ 2020-05-19 19:03:06
@Flying_Bird 我splay也没过去啊/kk
by Semsue @ 2020-05-19 19:07:04
@UltiMadow 我过去了。。。