1 条题解
-
0
C++ :
#include<cstdio> #include<cstring> #include<cstdio> using namespace std; #define Size 1010 int n; double tubarea,tubheight,watersize; double boxlenth[Size]={0},boxden[Size]={0},boxsize[Size]={0}; bool judge(double); int main() { scanf("%lf%lf%lf",&tubarea,&tubheight,&watersize); scanf("%d",&n); for(int i=1;i<=n;i++) { scanf("%lf%lf",&boxlenth[i],&boxden[i]); if(boxden[i]<=1) boxsize[i]=boxden[i]*boxlenth[i]; else boxsize[i]=boxlenth[i]; } double left=watersize/tubarea,right=tubheight,middle; while(right-left>1e-9) { middle=(left+right)/2; if(judge(middle)) right=middle; else left=middle; } printf("%.7lf",left); return 0; } bool judge(double waterheight) { double devote=0; for(int i=1;i<=n;i++) { if(boxsize[i]>waterheight) devote=devote+waterheight*boxlenth[i]*boxlenth[i]; else { if(waterheight+boxlenth[i]-boxsize[i]>tubheight) devote=devote+(boxlenth[i]-(tubheight-waterheight))*boxlenth[i]*boxlenth[i]; else devote=devote+boxsize[i]*boxlenth[i]*boxlenth[i]; } } if(devote<=(waterheight-watersize/tubarea)*tubarea) return true; else return false; }
- 1
信息
- ID
- 730
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者