1 条题解
-
0
「木棍拼正方形」题解
核心思路
从 根木棍中选 根拼正方形,只有两种拼法:
1. 三根单棍 + 一根三棍拼边
- 三条边各用一根木棍,第四条边用三根木棍拼接
- 需要:三根长度相等的木棍 (作为三条单棍边)
- 还需要:另外三根木棍长度之和等于 (拼成第四条边)
2. 两根单棍 + 两根双棍拼边
- 两条边各用一根木棍,另外两条边各用两根木棍拼接
- 需要:两根长度相等的木棍 (作为两条单棍边)
- 还需要:四根木棍分成两对,每对长度之和等于 (作为两条双棍边)
计数方法
第一步:统计
统计每种长度木棍的出现次数 。
第二步:分别计算两种情况的方案数
情况一(三单棍 + 一三棍边)
对每个可能的边长 :
- 如果 ,则选出三根 的方案数为
- 从长度不等于 的木棍中找三根,长度和为 的方案数为
- 贡献:
情况二(两单棍 + 两双棍边)
对每个可能的边长 :
- 如果 ,则选出两根 的方案数为
- 从长度不等于 的木棍中找四个,能分成两对且每对和为 的方案数为
- 贡献:
实现技巧
- 预处理:先枚举所有木棍对,记录和为 的数对,用于快速查找
- 去重:注意木棍不能重复使用,且正方形四条边无序
- 排序:先对木棍排序,便于使用双指针查找和为特定值的组合
算法复杂度
核心是枚举数对,复杂度 ,对于 可以接受。
将两种情况的结果相加就是最终答案。
- 1
信息
- ID
- 5984
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- 递交数
- 1
- 已通过
- 1
- 上传者