96pts TLE 求调教

P7915 [CSP-S 2021] 回文

个人认为,你这段代码 ```cpp while(dq1.size() || dq2.size()) { if(dq1.front() == dq2.front() && dq1.size() && dq2.size()) { ah += 'L', ed = 'R' + ed, dq1.pop_front(), dq2.pop_front(); } else if(dq2.front() == dq2.back() && dq2.size() >= 2) { ah += 'L', ed = 'L' + ed, dq2.pop_front(), dq2.pop_back(); } else if(dq1.front() == dq1.back() && dq1.size() >= 2) { ah += 'R', ed = 'R' + ed, dq1.pop_back(), dq1.pop_front(); } else if(dq1.back() == dq2.back() && dq1.size() && dq2.size()) { ah += 'R', ed = 'L' + ed, dq1.pop_back(), dq2.pop_back(); } else { R = 0; break; } } ``` 把 `ed='L'+ed` 改成 `ed+='L'`,然后输出的时候倒序遍历每个字符。 因为字符串 `+` 的复杂度是 $\mathcal{O(1)}$ 的,但是赋值 `=` 复杂度是 $\mathcal{O(n)}$。所以尽量用 `+=` 和 `push_back()` 这种内置函数。
by CoderXL @ 2023-10-21 11:12:10


|