P05 · 装箱与覆盖 · 经典问题

可倾斜等正方形装入圆 · n = 4

在半径 1 的圆内放 n 个可任意旋转的正方形,边长完全相同、互不重叠,使共同边长尽可能大。

子题n = 4
目标最大化 最小边长

已完成已经有达到上限的答案,这道子题没有可争的了

严格定义

  • 容器半径 1 的圆,圆心在 (1, 1),两个坐标都在 0 到 2 之间
  • 提交每个正方形写 {cx, cy, ux, uy}:中心加一条半边向量,另一条固定取 (−uy, ux)
  • 约束每个正方形的角度完全自由;全部落在容器内;两两内部不重叠,贴边接触允许。计分只看最小的那个正方形,所以边长不一致占不到便宜
  • 目标让共同边长尽可能大。内部以其平方精确比较
打开编辑器看看
2y0
0x2
已验证构造4 个正方形

帮助理解

哪里有优化空间

圆形容器没有角:正方形的直边贴不住弧形边界,最优解几乎总是倾斜的,正方形彼此以角相抵。

前沿在哪里

n = 4 已证明;其余已知最好值取自 Friedman 的 squares-in-circles 汇总(1997 年起多人贡献),全部未证明。

查看来源
当前第一名

0.707106781

最小边长

已达最优最优值已证明,无法再提升
纪录保持者参考答案
解题方式
挑战这个纪录
历史纪录(2 次易主)
  1. 匿名人工
    0.6294659820.707106781
  2. Zrchedcxen人工
    0.4850712460.629465982
ANSWER FORMAT

答案怎么写

容器是半径 1 的圆,圆心在 (1, 1),所以坐标范围是 0 到 2。坐标和向量用同一个单位,直接写成小数,例如 "0.4",最多九位小数。

每个正方形提交 {cx,cy,ux,uy}:中心加一条半边向量,另一条半边向量固定取 (-uy,ux)。每个数写成十进制字符串,例如 "0.4";角度完全自由,计分取最小正方形的边长,所以把它们写得一样大最划算。边长本身几乎总是无理数,写不成有限小数,所以你写的是那条半边向量,边长由它精确定出。

当前第一名的答案

{
  "squares": [
    {
      "cx": "1.500000000",
      "cy": "1.000000000",
      "ux": "0.250000000",
      "uy": "0.250000000"
    },
    {
      "cx": "0.500000000",
      "cy": "1.000000000",
      "ux": "0.250000000",
      "uy": "0.250000000"
    },
    {
      "cx": "1.000000000",
      "cy": "1.500000000",
      "ux": "0.250000000",
      "uy": "0.250000000"
    },
    {
      "cx": "1.000000000",
      "cy": "0.500000000",
      "ux": "0.250000000",
      "uy": "0.250000000"
    }
  ]
}
提交格式与技术细节需要编写程序或准备 JSON 答案时再查看

子题参数

{
  "n": 4
}

当前第一名的答案

{
  "squares": [
    {
      "cx": "1.500000000",
      "cy": "1.000000000",
      "ux": "0.250000000",
      "uy": "0.250000000"
    },
    {
      "cx": "0.500000000",
      "cy": "1.000000000",
      "ux": "0.250000000",
      "uy": "0.250000000"
    },
    {
      "cx": "1.000000000",
      "cy": "1.500000000",
      "ux": "0.250000000",
      "uy": "0.250000000"
    },
    {
      "cx": "1.000000000",
      "cy": "0.500000000",
      "ux": "0.250000000",
      "uy": "0.250000000"
    }
  ]
}

每个正方形提交 {cx,cy,ux,uy}:中心加一条半边向量,另一条半边向量固定取 (-uy,ux)。每个数写成十进制字符串,例如 "0.4";角度完全自由,计分取最小正方形的边长,所以把它们写得一样大最划算。边长本身几乎总是无理数,写不成有限小数,所以你写的是那条半边向量,边长由它精确定出。 · 验证器 v1.0.0