题解 P5951 【[BOI2003]Barrel】

· · 题解

远古BOI系列。。。

初中物理题(大雾)

设当前方块棱长为a,密度为\rho_a

\begin{aligned} F_{\uparrow}&=G_a \cr \rho_{water}gV'_a&=\rho_a gV_a \cr gV'_a&=\rho_a ga^3 \cr V'_a&=\rho_a a^3 \end{aligned}

所以液面会上升\dfrac{V_a'}{S}=\dfrac{\rho_a a^3}{S}

其实就是液面上升\dfrac{\min(\rho_a,1) a^3}{S}

还有一个细节就是水是会溢出来的

#include<bits/stdc++.h>
using namespace std;
double s,h,v,d,rou,a;
int x,y,z,n;
int main(){
    scanf("%d%d%d",&x,&y,&z); s=x,h=y,v=z;
    scanf("%d",&n); d=v/s;
    for (int i=1; i<=n; i++){
        scanf("%lf%lf",&a,&rou);
        rou=min(rou,1.0);
        d+=a*a*a*rou/s;
        if (d>=h){ printf("%.10lf\n",v); return 0; }
    }
    printf("%.10lf\n",d);
    return 0;
}