第 13 届 Python A 组(省赛) T1 裁纸刀 (5'/5') 题意:给定一个 \(20\times 22\) 的方格,每次可以在格子的边缘一切到底,问最少几刀可以把所有的格子都切出来(边缘 \(4\) 刀一定要切)。 思路:贪心地,一刀切的长度越长越好,那么要么就是横向一刀切,纵向一个一个切,要么纵向一刀切,横向一个一个切。两种取最小值即可。 最终答案:\(443\) PythonC++ 1 2 3n, m = 20, 22 print(min((n - 1) + n * (m - 1), (m - 1) + m * (n - 1)) + 4) 1 2 3 4 5 6 7 8 9#include <iostream> using namespace std; int main() { int n = 20, m = 22; cout << min(n - 1 + n * (m - 1), m - 1 + m * (n - 1)) + 4 << "\n"; return 0; } T2