1 条题解

  • 0
    @ 2025-8-24 22:15:55

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar Haoomff
    互关条件:/paste/o3u24srz

    搬运于2025-08-24 22:15:55,当前版本为作者最后更新于2023-07-10 17:27:05,作者可能在搬运后再次修改,您可在原文处查看最新版

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

    以下是正文


    物理 ++ 数学题。

    - 物理部分

    根据浮力可以发现一个坑点:密度小的物体会浮在水面上,所以我们在做的时候要根据密度来判断物体是否完全浸入水中。

    - 数学部分

    学过 66 年级的同学都知道求长方体、正方体、圆柱的体积计算公式:

    V=ShV=Sh

    根据上面这个公式可以求出逆定理:

    S=VhS=\frac{V}{h} h=VSh=\frac{V}{S}

    在这里,我们需要用到第二个逆定理:根据输入的 SSVV,我们可以求出水的高度是多少,也就是 VS\frac{V}{S}

    然后,就是根据密度判断物体是否完全浸入水中,算出浸入水中部分的体积,用沉入水中部分的体积除以底面积得到沉入水中的部分使得水面上升了多少。

    最后把每次算出的上升的高度累加起来并加上原始水的高度即可。

    #include<bits/stdc++.h>
    using namespace std;
    int s,h,v,n;
    double ans;
    int main(){
    	ios::sync_with_stdio(0);
    	cin.tie(0);
    	cout.tie(0);
    	cin>>s>>h>>v>>n;
    	ans=1.0*v/s;//原始水面高度 
    	for(;n--;){
    		double lc,md;
    		cin>>lc>>md;
    		if(md>=1)ans+=lc*lc*lc/s;//完全浸入水中 
    		else ans+=lc*lc*lc*md/s;//不完全浸入水中 
    		if(ans>=h){//有溢出的水 
    			cout<<h;//因为已经有溢出的水,所以无论如何都是满的,直接输出水池的高 
    			return 0;
    		}
    	}
    	printf("%.7lf",ans);
    	return 0;
    }
    
    • 1

    信息

    ID
    4967
    时间
    1000ms
    内存
    125MiB
    难度
    2
    标签
    递交数
    0
    已通过
    0
    上传者