「ULSG-1」泡水的铅筒 题解

发布时间 2023-06-16 20:56:59作者: An_Easy_Song

题目传送门

题目描述

一个圆锥放入一个长方体水池中,无水溢出,求长方体液面高度的最大、最小值。

解题思路

如果这个题只有一个数据点,此数据点只有一组数据,那这就是一道初中填空题()

先考虑 \(h1\) 的最小值。由“铅筒被完全浸没且没有液体溢出水池外”一句可得,若圆锥放入水池后液面高度恰为圆锥高度,则此时放入圆锥前的液面为 \(h1\) 最小值。易证,就不多说了。

而最大值同理,若放入圆锥后此时液面高度恰为水池的高,则此时放入圆锥前的液面为 \(h1\) 最大值。

对于放入前的水池液面高度,用放入后的液面高度减去圆锥的体积除以水池底面积的值即可。

AC代码

#include <bits/stdc++.h>
using namespace std;
const int N=5e5+1;

double a,b,h1,r,h2;
int n;
const double pai=3.14;

int main()
{
	scanf("%d",&n);
	while(n--)
	{
		scanf("%lf %lf %lf %lf %lf",&a,&b,&h1,&r,&h2);
		printf("%.2lf %.2lf\n",h2-(((pai*r*r*h2)/3.0)/(a*b)),h1-((((pai*r*r*h2)/3.0)/(a*b))));
	}
	return 0;
}

注意

  1. 注意输出要求,“保留两位小数
  2. 为了少点麻烦,可以直接把 \(a,b,h1,r,h2\) 五个变量当做 double 输入。