【二分查找】-HDU-1969-Pie
2014-02-19 15:58
465 查看
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1969
题目描述:
这位富二代过生日请小伙伴们吃pie,要求把pie平均分成(F+1)块(加上自己),每份必须是一整块,不能是若干块拼起来的。问一份最大体积是多少。
解题思路:
虽说这题很水,但第二次做二分。。没什么经验,还是琢磨了一阵,,然后就是通过不断判定 left right 变量是否成立二分找答案。难度不大,详见代码。
之后一直WA。没办法,上网查了别人代码。The answer should be given as a floating point number with an absolute error of at most 10^(-3).
这句话的意思竟然是printf %.4lf !我日你大爷。好吧,改完AC了。
教训:以后圆周率统统写成 acos( -1.0 )。这题精度设到1e-7。注意不要精度不够,不要超时。还有不要写cout了!!用 printf!
AC代码:
题目描述:
这位富二代过生日请小伙伴们吃pie,要求把pie平均分成(F+1)块(加上自己),每份必须是一整块,不能是若干块拼起来的。问一份最大体积是多少。
解题思路:
虽说这题很水,但第二次做二分。。没什么经验,还是琢磨了一阵,,然后就是通过不断判定 left right 变量是否成立二分找答案。难度不大,详见代码。
之后一直WA。没办法,上网查了别人代码。The answer should be given as a floating point number with an absolute error of at most 10^(-3).
这句话的意思竟然是printf %.4lf !我日你大爷。好吧,改完AC了。
教训:以后圆周率统统写成 acos( -1.0 )。这题精度设到1e-7。注意不要精度不够,不要超时。还有不要写cout了!!用 printf!
AC代码:
#include <iostream> #include <algorithm> #include <cstring> #include <cstdio> #include <cmath> #define PI acos(-1.0) #define eps 1e-7 using namespace std; double N,F; double v[10050],tv[10050]; int ok(double x) { if(!x)return 1; memset(tv,0,sizeof(tv)); for(int i=0; i<N; i++) { tv[i]=v[i]; } int i,num=0,flag=0; for(i=0; i<=N; i++) { if(num>=F+1) { flag=1; break; } if(tv[i]>=x) { while(tv[i]>=x) { tv[i]-=x; num++; } } } if(flag)return 1; return 0; } int main() { int T,r,i; double sum; cin>>T; while(T--) { cin>>N>>F; memset(v,0,sizeof(v)); sum=0; for(i=0; i<N; i++) { cin>>r; v[i]=r*r; sum+=v[i]; } double left,right; left=0; right=sum/(F+1); while(right-left>eps) { double mid=(left+right)/2.0; if(ok(mid)) left=mid; else right=mid; } printf("%.4lf\n",left*PI); } return 0; }AC截图:
相关文章推荐
- HDU 1969 Pie(二分查找)
- Pie(hdu 1969 二分查找)
- hdu 1969Pie(uvaoj 3635) 二分查找
- hdu 1969 Pie(二分查找)
- hdu 1969 Pie(二分查找)
- 二分查找 hdu1969 pie
- HDU 1969 Pie (二分查找)
- HDU 1969 Pie(二分查找)
- HDU 1969 Pie(二分查找)
- Pie 【hdu-1969】【二分】
- HDU1969:Pie(二分)
- 【HDU】-1969-Pie(二分)
- hdu1969 Pie(二分答案)
- HDU 1969 Pie 【二分】
- HDU 1969 Pie(二分搜索)
- hdu 1969 Pie 二分
- hdu1969(pie二分)
- HDU 1969 Pie [二分]
- HDU1969---Pie 二分
- HDU 1969--Pie【二分】