最优性剪枝需要先具备什么?
算法进阶 · 小纸条
选一章打印。双面打印(按长边翻页)后沿虚线剪开,每张卡片正面题目、背面答案。
优先扩展分支最少的节点,依据什么直觉?
迭代加深相比普通 BFS 的主要优点是什么?
集合 S=5(二进制 101)含哪些元素(下标从 0)?
for(int S=0;S<(1<<n);S++) 共循环几次?
状压 DP 适用的典型数据范围是?
判断某行状态 S 内部没有相邻的两个 1,用什么条件?
向 vector 尾部插入 n 个元素,均摊每次复杂度是多少?
单调栈里每个元素最多被 push、pop 各一次,这体现了什么分析?
n=10^5 时 O(n²) 约 10^10 次运算,通常会怎样?
参考答案(家长):尽早触发矛盾或确定,减少无效展开。
参考答案(家长):一个当前已知的最优解(界),用来比较剪枝。
参考答案(家长):元素 0 和 2。
参考答案(家长):内存占用小(DFS 只存一条路径),仍能找最短。
参考答案(家长):n 很小(约 ≤20),因状态数达 2^n。
参考答案(家长):2^n 次。
参考答案(家长):均摊 O(1)(扩容总代价 O(n))。
参考答案(家长):(S&(S<<1))==0(无两个相邻位同时为 1)。
参考答案(家长):超时(远超 1 秒可算量)。
参考答案(家长):均摊/势能分析,总操作 O(n)。
对拍需要哪三样东西?
对拍数据规模应偏大还是偏小,为什么?
为什么调试输出建议用 cerr 而非 cout?
数据范围为什么要第一时间看?
“城市间修路使全连通且总长最小”抽象成什么模型?
n≤10^5、时限 1s,O(n²) 可行吗?
遇到暂时想不出正解的题,第一反应该做什么?
满分算法没思路时,如何拿分?
骗分的底线要求是什么?
打表法适合什么样的题?
参考答案(家长):偏小,便于暴力快速跑并人工核对反例。
参考答案(家长):正解、暴力(基准)、随机数据生成器。
参考答案(家长):它直接决定可用算法的复杂度上限。
参考答案(家长):cerr 走标准错误,不混入答案(标准输出),便于分离。
参考答案(家长):不可行(约 10^10 次),需 O(n log n) 或更快。
参考答案(家长):最小生成树。
参考答案(家长):为小数据写暴力、为特殊子任务写特判。
参考答案(家长):先写暴力/骗分拿部分分,标记后再攻。
参考答案(家长):输入范围小、可离线预算出全部答案的题。
参考答案(家长):程序能编译、能运行、输出格式正确,不 RE。
用文件 IO 的赛制,交前最该确认什么?
int a=1e5,b=1e5; long long c=a*b; 结果对吗?
访问 a[i-1] 时,i 至少从几开始才安全?
处理多组数据时最容易漏做的一步是什么?
想把 int 数组每个元素设为 1,能用 memset(a,1,…) 吗?
关闭同步(sync_with_stdio(false))后还能混用 scanf 吗?
看到“最大值最小”这样的字眼,优先想哪个方法?
n=2000、时限 1s,O(n²) 约多少次运算,可行吗?
快读、并查集这类模板赛前应达到什么熟练度?
为自己写一条最想提醒的“考场检查清单”要点。
参考答案(家长):不对,a*b 先按 int 算已溢出,应写 (long long)a*b。
参考答案(家长):输入输出文件名与题目要求完全一致。
参考答案(家长):每组重新初始化(清空)全局变量与数组。
参考答案(家长):从 1 开始(i=0 时 a[-1] 越界)。
参考答案(家长):不能,关同步后 C 与 C++ 流的缓冲不再一致。
参考答案(家长):不能,会得到 0x01010101 而非 1,应循环赋值。
参考答案(家长):约 4×10^6 次,可行。
参考答案(家长):二分答案。
参考答案(家长):(示例)交题前必查:多组数据清空 + long long 防溢出 + 样例全过。
参考答案(家长):能凭记忆快速、正确地默写出来。