day2 HDU 1969 Pie
2016-07-22 09:32
302 查看
#include"iostream" #include"iomanip" using namespace std; const double PI=3.14159265358979; int t,n,f,sum; double maxx; double s[10005]; int main() { cin>>t; while(t--) { cin>>n>>f; maxx=0; for(int i=0;i<n;i++) { cin>>s[i]; s[i]=s[i]*s[i]; maxx+=s[i]; } f++; double l,r,mid; l=0; r=maxx/f; while((r-l)>0.000001) { mid=(l+r)/2.0; sum=0; for(int i=0;i<n;i++) sum+=(int)(s[i]/mid); if(sum>=f) l=mid; else r=mid; } //cout<<mid<<endl; cout<<fixed<<setprecision(4)<<mid*PI<<endl; } return 0; }二分求解能获得的最大体积,二分区间为期望的下限和上限。因为在求解出答案后还要对答案进行必要的计算才能判断是否符合条件,所以直接划分区间找答案。除此之外,题目精度有一定的要求,所以在写程序的时候,对于PI这种常识性数字,还是尽量取的越精细越好,对于二分精度的设定,也要进行一些必要的尝试和摸索。另外在条件判断中用s[i]/mid来确定每个派能分几份,这个结果应该是舍去小数的,如果直接从double赋给int貌似会进行四舍五入,导致结果WA,在加上(int)强制转换后能AC,要记住这一点。
相关文章推荐
- 如何不让EditText自动弹出输入法
- 自写项目——哈夫曼编译码及客户端服务端交互实现
- datatable转实体
- UML类图
- poj3122Pie(2)
- Myeclipse导入jeecg后pom.xml出错
- 安装Vm12
- C++中多态的实现原理
- JS处理时间
- 1231331321123133132112313313211231331321123133132112313313211231331321123133132112313313211231331321
- [李景山php]thinkphp核心源码注释|Wincache.class.php
- JQUERY 网站
- Some questions about RT-preempt
- laravel 重命名/删除表
- 2016 Multi-University Training Contest 2 It's All In The Mind
- PHP数组问题
- 模拟http 的请求工具汇总
- [李景山php]thinkphp核心源码注释|Sqlite.class.php
- day2 POJ 2366 Sacrament of the sum
- java-03