HDU 1551 Cable master 二分
2015-12-22 21:30
183 查看
题意:把N条电缆截成相同的M段,问截成的最大长度是多少?
思路:二分截的长度即可。(我不会告诉你我的程序样例都过不了)
http://acm.hdu.edu.cn/showproblem.php?pid=1551/********************************************* Problem : HDU 1551 Author : NMfloat InkTime (c) NM . All Rights Reserved . ********************************************/ #include <map> #include <set> #include <queue> #include <stack> #include <cmath> #include <ctime> #include <cstdio> #include <cstring> #include <cstdlib> #include <iostream> #include <algorithm> #define rep(i,a,b) for(int i = (a) ; i <= (b) ; i ++) #define rrep(i,a,b) for(int i = (b) ; i >= (a) ; i --) #define repE(p,u) for(Edge * p = G[u].first ; p ; p = p -> next) #define cls(a,x) memset(a,x,sizeof(a)) #define eps 1e-8 using namespace std; const int MOD = 1e9+7; const int INF = 0x3f3f3f3f; const int MAXN = 1e5+5; const int MAXE = 2e5+5; typedef long long LL; typedef unsigned long long ULL; int T,n,m,k; int fx[] = {0,1,-1,0,0}; int fy[] = {0,0,0,-1,1}; double A[10005] ; double rights; double sum; void input() { double tmp; rights = 0; rep(i,1,n) { scanf("%lf",&A[i]); rights += A[i]; } } int calc(double mid) { int count = 0; rep(i,1,n) { count += (int)( A[i] / mid ); } return count; } void solve() { double left = 0; double right = rights; double mid ; while(fabs(right-left)>eps) { mid = (left + right) / 2; if(calc(mid) < m) right = mid; else left = mid; } printf("%.2lf\n",mid); } int main(void) { //freopen("a.in","r",stdin); while(scanf("%d %d",&n,&m),n+m) { input(); solve(); } return 0; }
相关文章推荐
- django中使用日志输出
- 了解Spring 注解注入
- opus交叉编译
- MySQL服务器安装完之后如何调节性能
- VB图像识别、语音识别源代码+注释
- ListView优化原理详解
- 小记react-native 安装
- UILabel和UIFont开发技巧
- 百度导航Android版问题集
- mysql fabric安装使用测试
- 使用 str.indexOf(sourceStr,indexOffset) 匹配所有项
- ubuntu桌面,窗口,终端快捷键+怎么设置快捷键
- HttpAsyncClient 做并发长连接的一个实例
- Java利用httpasyncclient进行异步HTTP请求
- UITextField技巧
- bzoj4332;vijos1955:JSOI2012 分零食
- HttpAsyncClient 做并发长连接的一个实例
- Java利用httpasyncclient进行异步HTTP请求
- 准确率 召回率
- mysql5.0.x统计每秒增删改查替换数及系统每秒磁盘IO