(二分)HDU 1969 pie
来源:互联网 发布:从笔记本cpu编号知型号 编辑:程序博客网 时间:2024/05/16 02:02
简单的二分题,注意精度
不知道为什么老是WA
WA代码:
#include <stdio.h>#include <math.h>double pi = acos(-1.0);#define eps 1e-7int main(){ int k,n,f,i,r,count; double mid,a[10005],low,up; scanf("%d",&k); while(k--) { low=0.0; up=0.0; scanf("%d%d",&n,&f); f+=1; for(i=0;i<n;i++) { scanf("%d",&r); a[i]=Pi*r*r; if(a[i]>up) up=a[i]; } mid=(up+low)/2; while(up-low>eps) { count=0; for(i=0;i<n;i++) count+=(int)(a[i]/mid); if(count>=f) low=mid; else up=mid; mid=(up+low)/2; } printf("%.4lf\n",mid); } return 0;}
下面是AC代码
#include <stdio.h>#include <math.h>double pi = acos(-1.0);int F,N,i;double V[10001];int test(double x){ int num=0; for(i = 0; i < N;i++) { num += (int)(V[i]/x); } if(num>=F) return 1; else return 0;}int main(){ int t,r; double v,max,left,right,mid; scanf("%d",&t); while(t--) { scanf("%d%d",&N,&F); F = F+1; for(i = 0; i < N; i++) { scanf("%d",&r); V[i] = pi*r*r; v += V[i]; } max = v/F; left = 0.0; right = max; while((right-left)>1e-6)//注意这里的精度问题。 { mid = (left+right)/2; if(test(mid)) left = mid; else right = mid; } printf("%.4f\n",mid); } return 0;}
0 0
- HDU:1969 Pie (二分)
- 【HDU】-1969-Pie(二分)
- (二分)HDU 1969 pie
- HDU 1969--Pie【二分】
- HDU 1969 Pie【二分】
- HDU-1969-Pie【二分】
- HDU 1969 Pie(二分)
- hdu 1969 Pie 二分
- HDU 1969 Pie [二分]
- Pie(HDU 1969) —— 二分
- HDU 1969 Pie(二分查找)
- hdu 1969 Pie(二分查找)
- 文章标题 HDU 1969 : Pie(二分)
- HDU 1969 pie(贪心+二分)
- HDU - 1969 Pie (二分查找)
- 【二分查找】-HDU-1969-Pie
- HDU 1969 Pie(二分查找)
- HDU 1969 Pie (二分查找)
- 将引用的多个jar包通过MANIFEST.MF打包成一个jar
- 五种I/O模型
- Qt-Qss:自定义界面引入qss
- CodeForces 371C Hamburgers (二分)
- php 踩坑的提莫
- (二分)HDU 1969 pie
- uva11045
- Mocha 实例教程 - ruanyf
- 【codevs 3303】翻转区间 splay
- JAVA(六)函数和数组
- (OK)(paper-7) port mptcp on Android-4.4
- 标准C++中的string类总结
- 欢迎使用CSDN-markdown编辑器
- 排序_3.插入排序