1 条题解

  • 0
    @ 2025-8-24 22:25:00

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar wangyizhi
    昨夜西风凋碧树。独上高楼,望尽天涯路。

    搬运于2025-08-24 22:25:00,当前版本为作者最后更新于2024-12-10 21:12:19,作者可能在搬运后再次修改,您可在原文处查看最新版

    自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多

    以下是正文


    写在最前面

    %%% 膜拜楼上巨佬 %%%

    这篇题解的思路与楼上大佬相近,但感觉楼上大佬公式讲的不是很清楚(对 OIers 而言),于是本蒟蒻决定把公式推导一下 QwQ。

    0.说明

    可能的前置知识:

    • 向量运算

    • 三点共线定理

    • 物体的平衡条件(力矩平衡)

    下文中记原点为 OO

    1.求重心

    对于重心,先考虑把多边形剖成小三角形求重心,然后根据它们的质量进行合并。

    1.1 求三角形重心

    考虑 ABC\triangle ABC,记其重心为 GG,如何用 OA\overrightarrow{OA}OB\overrightarrow{OB}OC\overrightarrow{OC} 表示 OG\overrightarrow{OG}

    BCBC 中点为 DD,则 GG 在线段 ADAD 上且满足 AG=2DGAG=2DG。由于 BBCCDD 三点共线且 BD=CDBD=CD,则有

    $$\overrightarrow{OD}=\frac{1}{2}\overrightarrow{OB}+\frac{1}{2}\overrightarrow{OC} $$

    又由于 AAGGDD 三点共线且 AG=2DGAG=2DG,则有

    $$\overrightarrow{OG}=\frac{2}{3}\overrightarrow{OD}+\frac{1}{3}\overrightarrow{OA} $$

    综合两式,得

    $$\overrightarrow{OG}=\frac{1}{3}\overrightarrow{OA}+\frac{1}{3}\overrightarrow{OB}+\frac{1}{3}\overrightarrow{OC} $$

    1.2 求三角形质量

    考虑 ABC\triangle ABC,由题意得其质量可以表示为 SABCS_{\triangle ABC}。由“二维向量叉积”(注:其实并没有这个概念,,,叉积其实只有三维向量有,,,)的几何意义得

    $$m=S_{\triangle ABC}=\frac{1}{2}\overrightarrow{AB}\times \overrightarrow{AC} $$

    1.3 合并两个多边形时的重心变化

    记要合并的第一个多边形质量为 m1m_1,重心为 G1G_1,第二个多边形质量为 m2m_2,重心为 G2G_2,合并后的重心为 GG

    由重心的定义,当合并后以 GG 为参考点时,合力矩为 00。因此有

    $$m_1\overrightarrow{GG_1}=m_2 \overrightarrow{GG_2} $$

    $$\frac{m_2}{m_1}=\frac{\overrightarrow{GG_1}}{\overrightarrow{GG_2}} $$

    由三点共线定理,又有

    $$\overrightarrow{OG}=\frac{1}{m_1+m_2}(m_1\overrightarrow{OG_1}+m_2\overrightarrow{OG_2}) $$

    当有多个多边形时,同理可以得出

    $$\overrightarrow{OG}=\frac{1}{m_1+m_2+m_3+...}(m_1\overrightarrow{OG_1}+m_2\overrightarrow{OG_2}+m_3\overrightarrow{OG_3}+...) $$

    因此我们就可以把物体的重心位置和质量求出来啦。

    2.求答案

    设支撑面为 lrl\sim r,重心所在横坐标为 x0x_0,起重机质量为 m0m_0,第一个点的坐标为 (x,y)(x,y),挂的物体的质量为 mm

    分情况讨论:

    a) x0>rx_0>r

    • x>rx>r,则显然一定会倒。

    • lxrl\le x \le r,由于需满足力矩平衡,以 (0,r)(0,r) 为参考点,有

    (rx)×mmin=(x0r)×m0(r-x)\times m_{min}=(x_0-r)\times m_0

    mx0rrxm0m\ge \frac{x_0-r}{r-x}m_0
    • x<lx<l,则最小值时以 (r,0)(r,0) 为参考点平衡,最大值时以 (l,0)(l,0) 为参考点平衡,因此
    (rx)×mmin=(x0r)×m0(r-x)\times m_{min}=(x_0-r)\times m_0 (lx)×mmax=(x0l)×m0(l-x)\times m_{max}=(x_0-l)\times m_0

    x0rrxm0mx0llxm0\frac{x_0-r}{r-x}m_0\le m \le\frac{x_0-l}{l-x}m_0

    b) x0<lx_0<l

    求法同 a),不再赘述。

    c) lx0rl\le x_0\le r

    • x>rx>r,则最大值时以 (r,0)(r,0) 为参考点平衡。因此有
    (rx0)×m0=(xr)×mmax(r-x_0)\times m_0=(x-r)\times m_{max}

    mrx0xrm0m\le \frac{r-x_0}{x-r}m_0
    • x<lx<l,同上可以得出
    mx0llxm0m\le \frac{x_0-l}{l-x}m_0
    • lxrl\le x \le r,则无论如何都会平衡。

    OK,那到这里这个问题我们就推完了,剩下的就是代码实现的问题了。

    代码就不放了,看楼上大佬的吧。

    • 1

    信息

    ID
    6042
    时间
    1000ms
    内存
    1024MiB
    难度
    5
    标签
    递交数
    0
    已通过
    0
    上传者