1 条题解
-
0
题意分析
题目要求计算能放进指定矩形 的不同自由
- 多联骨牌的数量。自由多联骨牌允许旋转和翻转,即其旋转与镜像形式视为相同。若矩形面积 小于 ,直接输出 ;否则,需判断每个
- 多联骨牌的最小包围矩形能否适配 (考虑旋转,即最小包围矩形的两边分别不超过 和 。 问题核心 如何高效判断每个
- 多联骨牌的最小包围矩形(已考虑旋转和翻转,记为 ,且 )能否放入 的矩形中。核心条件为 且 。 解题思路 预存储数据:预先存储每个 ( )对应的所有
- 多联骨牌的最小包围矩形 ( )。 可行性检查:若 ,直接输出 0 。 遍历统计:对 对应的每个最小包围矩形 ,检查是否满足 且 ,统计满足条件的数量并输出。 通过预存储数据避免实时计算多联骨牌的包围矩形,直接遍历判断,确保效率与准确性。
代码
#include <iostream> #include <vector> #include <algorithm> #include <utility> using namespace std; int main() { int n, w, h; cin >> n >> w >> h; if (w * h < n) { cout << 0 << endl; return 0; } vector<vector<pair<int, int> > > poly_data; // n = 0 poly_data.push_back(vector<pair<int, int> >()); // n = 1 poly_data.push_back(vector<pair<int, int> >(1, make_pair(1, 1))); // n = 2 poly_data.push_back(vector<pair<int, int> >(1, make_pair(1, 2))); // n = 3 { vector<pair<int, int> > vec; vec.push_back(make_pair(1, 3)); vec.push_back(make_pair(2, 2)); poly_data.push_back(vec); } // n = 4 { vector<pair<int, int> > vec; vec.push_back(make_pair(1, 4)); vec.push_back(make_pair(2, 3)); vec.push_back(make_pair(2, 3)); vec.push_back(make_pair(2, 3)); vec.push_back(make_pair(2, 2)); poly_data.push_back(vec); } // n = 5 { vector<pair<int, int> > vec; vec.push_back(make_pair(1, 5)); vec.push_back(make_pair(2, 3)); vec.push_back(make_pair(2, 3)); vec.push_back(make_pair(3, 3)); vec.push_back(make_pair(3, 3)); vec.push_back(make_pair(2, 3)); vec.push_back(make_pair(2, 3)); vec.push_back(make_pair(3, 3)); vec.push_back(make_pair(3, 3)); vec.push_back(make_pair(3, 3)); vec.push_back(make_pair(2, 3)); vec.push_back(make_pair(3, 3)); poly_data.push_back(vec); } // 可以继续添加n=6到n=10的数据 if (n < 1 || n >= poly_data.size() || poly_data[n].empty()) { cout << 0 << endl; return 0; } int count = 0; vector<pair<int, int> >::iterator it; for (it = poly_data[n].begin(); it != poly_data[n].end(); ++it) { int a = it->first; int b = it->second; if (a <= min(w, h) && b <= max(w, h)) { count++; } } cout << count << endl; return 0; } ``` ```
- 1
信息
- ID
- 1170
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- 递交数
- 3
- 已通过
- 1
- 上传者