zoj 3733 skycity
来源:互联网 发布:linux chrome 命令行 编辑:程序博客网 时间:2024/05/20 09:45
题意:给你最顶层圆的半径r和最底层远的半径R,每层楼的高度H,楼的层数f,玻璃的最小面积s,要你求出能围住每个圆的最小玻璃面积。
一开始没看懂题意,就试着将圆的半径按等差数列递减,没想到居然对了。
推理可以得出,围住圆的多边形边数越多,所需的玻璃的面积就越少,所以只要求出围住每层圆的最多正多边形的边数就可以求出最后所需的最少的玻璃面积。而求出正多变形的方法,我用的和第一道题一样的方法,二分查找,从3条边到100000进行查找,最后就可以得出,而且玻璃的面积要大于s。
#include<iostream>#include<string.h>#include<stdio.h>#include<algorithm>#include<map>#include<bitset>#include<vector>#include<cmath>using namespace std;const double pi=acos(-1.0);int r,R,h,f,s;double caldis(int n,double r){ return 2.0*r*tan(pi/n);}int main(){ int i,j,k; while(scanf("%d%d%d%d%d",&R,&r,&h,&f,&s)!=EOF) { double sh=(double)h/f; double ans=0; int larn=100000; for(i=f;i>=1;i--) { double rr=1.0*(R-r)/f*(i-1)+r; int minn=3,maxx=larn; int mid,num; double ss; while(minn<=maxx)//二分求出多边形的最多边数 { mid=(minn+maxx)>>1; double tmp=caldis(mid,rr)*sh; if(tmp-s>0)//最小面积要大于s { ss=tmp; num=mid; minn=mid+1; } else maxx=mid-1; } ans+=num*ss; larn=num; } printf("%.3lf\n",ans); }}
0 0
- zoj 3733 Skycity
- zoj 3733 skycity
- ZOJ 3733 Skycity 数学
- zoj 3733 Skycity 长沙赛区
- zoj 3733 Skycity 长沙现场赛H题
- Skycity
- zoj 3733 (hdu 4798) Skycity (2013 亚洲区域赛 长沙站 H)
- ZJU 3733 长沙现场赛 H Skycity
- ZOJ3733 Skycity
- HDU 4798 Skycity
- HDU 4798 Skycity【几何】
- hdu 4798 Skycity(几何)
- UVALive 6618 Skycity(数学)
- HDU 4798 Skycity(计算几何)
- HDU 4798 Skycity【计算机几何】【阅读题】
- HDU 4793 Collision + HDU 4798 Skycity 简单几何
- ZOJ
- ZOJ
- 第五章 语句
- 神经网络之BP神经网络
- iOS UITableView 优化
- android NDk 驱动以及androidcontrol界面开发
- Linux进程—task_struct
- zoj 3733 skycity
- Android通过http协议POST传输方式如下: (转)
- linux学习笔记鸟哥的私房菜(二)-文件与目录管理
- CCI 1.2 反转字符串
- Sequoiadb 测试体验系列之一 – 安装和配置
- 字符串转换为数字与数字转换为字符串库函数
- Spring IoC(控制反转)之IoC的使用
- 文本记录任意时刻的ping值
- jquery 学习 二 DOM & JQUERY