1 条题解
-
0
A. 树林 详细题解
题目核心理解
在一块 的正方形草坪上种树,树只能种在整数坐标 处。 每棵树以种植点为圆心、半径 的圆必须完全在草坪内,且任意两个圆只能相切、不能重叠(圆心距 )。 要求输出最多能种多少棵树,以及任意一种最优方案。
核心思路
1. 关键性质
- 设 ,合法坐标必须满足 ,保证圆不超出草坪。
- 两点 、 合法条件:
- 问题等价于:在合法点集中选出最多的点,两两互不冲突 → 求图的最大团。
2. 递归构造思路
用 表示只使用满足 的点时的最优方案。 每次取最大横坐标 及其所在列 ,分两种决策:
- 不种:将该列上限减 ,递归求解。
- 种:把所有列的上限更新为与该点距离合法的最大值,再递归求解。
3. 小半径特判
- :所有内部整点都能种。
- :种 为偶数的点。
- 更小 可直接按网格规律构造。
算法流程
- 计算 ,筛出所有合法整点。
- 建立冲突图:两点距离不足 则连边。
- 使用 最大团算法 求出最多可种点数。
- 输出点数及对应坐标。
公式与复杂度分析
距离约束公式:
复杂度
- 合法点数:
- 最大团算法:指数级,但 加剪枝可轻松通过
- 总体:可在 秒时限内处理所有数据
可轻松处理 、 为 位小数的所有数据范围。
- 1
信息
- ID
- 6580
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- 递交数
- 1
- 已通过
- 1
- 上传者