摘要:
问题来自 P1902 刺杀大使,在最初的实现中 DFS 中一段代码如下: visited[x2][y2] = true; flag = dfs(v, x2, y2); visited[x2][y2] = false; if (flag) { break; } 从格点([x2][y2]) 出发进行搜索 阅读全文
摘要:
画出算法的演示图,展现算法对某个实例详细的执行过程,可以很清晰地把算法写下来。 注意以下的几点: 实例的规模应该尽可能小,便于人工分析算法的执行过程; 实例应该尽可能包含各种特殊情况,以确保跟着演示图编写的代码也会考虑到这些特殊情况; 演示图应当简单、简洁、清晰。 通过参考这篇快速排序的博客(排序算 阅读全文
摘要:
单个跑正常,多个跑异常;因为上一个测试的输入内容还没有被读完就 goto/break/continue 了。 这种情况,需要读取上一个输入中剩余的部分。 例子: std::getline(std::cin, s); // read the leftovers 问题来源:https://www.luo 阅读全文
摘要:
这两种写法效率依赖处理器、编译器和标准库。一般来说循环内的重复操作的性能差于循环外的单次操作。 参考文献 Which is more efficient to use in a for loop, i<sqrt(n) or i*i<(n)? 阅读全文
摘要:
true == 1; true + 1; If the destination type is bool, see 4.12. If the source type is bool, the value false is converted to zero and the value true is 阅读全文
摘要:
for (int i = 0; i < buildings.size(); i++) {} 和 int n = buildings.size(); for (int i = 0; i < n; i++) {} 之间的效率差距如何? 通常 size() 函数的调用会被编译器内联,可能会有些许性能损失, 阅读全文