大家都知道,在让某个变量加一时,使用 ++i 之类的语句,可以让该变量先加一,在进入后续的赋值操作。
于是,笔者在做某道 01-trie 练习题时,在 new_node 函数中采用了如下写法:
trie[++tot][0] = trie[tot][1] = 0;
该写法下,笔者的代码通过了所有的大样例,但成功地获得了 8pts 的好成绩。
并且,将洛谷给出的错误数据输入本地的 exe 文件,得出的答案是正确的。
于是,笔者经过了许多尝试,发现只要把这行代码修改为:
++tot, trie[tot][0] = trie[tot][1] = 0;
就可以获得 100pts 的好成绩。
问题在于,作者在洛谷提交时选择的是 c++14,关闭 02 优化,在本地编译时的编译选项也是 -std=c++14。
作为 oi 萌新,笔者并不知道是什么问题导致了 100 -> 8,但肯定的是,如果笔者在 noip 考场上犯了同样的问题,那必然是要 afo 了。
所以蒟蒻非常希望有大佬能给出靠谱的解答,谢谢。