题解:P17050 [NWERC 2022] 翻瓶挑战 / Bottle Flip
xiaozhengguoaaa
·
·
题解
在我完全只会高一知识的情况下能通过此题吗。
主要思路
把瓶子的总质量看成两部分:
水:高度为 x,密度 d_w,质量 m_w = d_w \cdot \pi r^2 x,它的重心在 x/2 处。
空气:高度为 h-x,密度 d_a,质量 m_a = d_a \cdot \pi r^2 (h-x),它的重心在 (x+h)/2 处。
整个瓶子的重心高度 X 可以用类似杠杆平衡的思路求出:
X = \frac{m_w \cdot \frac{x}{2} + m_a \cdot \frac{x+h}{2}}{m_w + m_a}
把质量表达式代入,消去 \pi r^2,得到:
X(x) = \frac{d_w x \cdot \frac{x}{2} + d_a (h-x) \cdot \frac{x+h}{2}}{d_w x + d_a (h-x)}
化简分子:
d_w x \cdot \frac{x}{2} = \frac{d_w x^2}{2}
d_a (h-x) \cdot \frac{x+h}{2} = \frac{d_a (h^2 - x^2)}{2}
所以分子为 \frac{1}{2}\left[(d_w - d_a)x^2 + d_a h^2\right]。
分母为 d_w x + d_a (h-x) = d_a h + (d_w - d_a)x。
因此:
X(x) = \frac{(d_w - d_a)x^2 + d_a h^2}{2\left[d_a h + (d_w - d_a)x\right]}
为了看起来美观,先设:
A = d_w - d_a
B = d_a h^2
C = d_a h
那么式子就变成了:
X(x) = \frac{Ax^2 + B}{2(Ax + C)}
这是一个分式函数,我们要求它在 x \in [0, h] 上的最小值。
设:
t = Ax + C
由于 x \in [0, h],所以 t \in [C, \, A h + C]。
同时,由 x = \frac{t - C}{A},代入分子 Ax^2 + B:
Ax^2 + B = A \cdot \frac{(t-C)^2}{A^2} + B = \frac{(t-C)^2}{A} + B
于是整个式子变成:
X = \frac{1}{2} \cdot \frac{\frac{(t-C)^2}{A} + B}{t} = \frac{1}{2} \left( \frac{t^2 - 2Ct + C^2}{A t} + \frac{B}{t} \right)
进一步拆开:
X = \frac{1}{2} \left( \frac{t}{A} - \frac{2C}{A} + \frac{C^2}{A t} + \frac{B}{t} \right) = \frac{1}{2} \left( \frac{t}{A} - \frac{2C}{A} + \frac{C^2 + AB}{A t} \right)
注意到 C^2 + AB 是一个常数,我们可以算一下:
C^2 + AB = (d_a h)^2 + (d_w - d_a) \cdot d_a h^2 = d_a^2 h^2 + d_a(d_w - d_a)h^2 = d_a d_w h^2
所以:
X(t) = \frac{1}{2} \left( \frac{t}{A} - \frac{2C}{A} + \frac{d_a d_w h^2}{A t} \right)
然后用基本不等式。
现在 X(t) 中,只有 \frac{t}{A} 和 \frac{d_a d_w h^2}{A t} 这两项会随 t 变化。而 - \frac{2C}{A} 是常数。
由均值不等式 \frac{a+b}{2} \ge \sqrt{ab} 可得:
\frac{t}{A} + \frac{d_a d_w h^2}{A t} \ge 2 \sqrt{ \frac{t}{A} \cdot \frac{d_a d_w h^2}{A t} } = 2 \sqrt{ \frac{d_a d_w h^2}{A^2} } = 2h \cdot \frac{\sqrt{d_a d_w}}{A}
当且仅当:
\frac{t}{A} = \frac{d_a d_w h^2}{A t}
即:
t^2 = d_a d_w h^2 \quad \Rightarrow \quad t = h \sqrt{d_a d_w}
时取得等号。
因为 t = A x + C = (d_w - d_a)x + d_a h,所以:
(d_w - d_a)x + d_a h = h \sqrt{d_a d_w}
解得:
x = h \cdot \frac{\sqrt{d_a d_w} - d_a}{d_w - d_a}
将分母有理化,分子分母同时乘以 \sqrt{d_a} + \sqrt{d_w},可得:
x = h \cdot \frac{\sqrt{d_a}}{\sqrt{d_a} + \sqrt{d_w}}
然后这就是最终的答案。
:::info[AC code]
#include <bits/stdc++.h>
#define int long long
#define fst ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);
using namespace std;
typedef long long ll;
typedef pair<int, int> PII;
const int N = 4e6 + 7;
const int P = 1e9 + 7;
const int MOD = 998244353;
const int INF = 0X3F3F3F3F;
// const int dx[] = {-1, 1, 0, 0, -1, -1, +1, +1};
// const int dy[] = {0, 0, -1, 1, -1, +1, -1, +1};
const int dx[] = {-1 , 1 , 0 , 0} ;
const int dy[] = {0 , 0 , -1 , 1} ;
double h , r , da , dw ;
double ans ;
signed main()
{
fst ;
cin >> h >> r >> da >> dw ;
ans = h * sqrt(da) / (sqrt(da) + sqrt(dw)) ;
cout << fixed << setprecision(10) << ans ;
return 0 ;
}
:::