zoukankan      html  css  js  c++  java
  • poj1064 Cable master

    /*
      注意这题比较特殊,求每条绳子的长度的时候,不会去四舍五入,确切说,是只会四舍,绝不五入...否则的话,最终还是不能达到K条的总数
      
      这题对数据的处理要比较敏感,必须意识到,哪怕是保留两位小数,第三位小数,也是向下取整,绝对不可进位
      想明白这点以后,cmath头文件中的floor函数,就理所当然应该用了
    */
    #include <iostream>
    #include <iomanip> 
    #include <cmath> 
    using namespace std;
    const int MAX_N = 1e4 + 10;
    double L[MAX_N];
    int N, K;
    const double INF = 0x3f3f3f3f;
    
    // 判断是否满足条件 
    bool C(double x)
    {
    	int num = 0;
    	for (int i = 0; i < N; i++)
    	num += (int)(L[i] / x);
    	return num >= K;
    }
    
    void solve()
    {
    	// 初始化解的范围
    	double lb = 0, ub = INF;
    	
    	// 重复循环,直到解的范围足够小
    	for (int i = 0; i < 100; i++)
    	{
    		double mid = (lb + ub) / 2;
    		if (C(mid)) lb = mid;
    		else ub = mid;
    	} 
    //	cout << fixed << setprecision(2) << ub << endl; 
    	cout << fixed << setprecision(2) << floor(ub * 100) / 100 << endl;
    }
    int main()
    {
    	cin >> N >> K;
    	for (int i = 0; i < N; i++) cin >> L[i];
    	solve();
    	return 0;
    }

  • 相关阅读:
    4-数组、指针与字符串1.3-this指针
    Linux命令----cp
    Linux命令----mv
    Linux命令----rm
    PHP7下的协程实现 转
    php生成器 yield 转
    python并发编程之多进程(实践篇) 转
    python 多进程
    线程创建 线程数
    多任务 执行
  • 原文地址:https://www.cnblogs.com/mofushaohua/p/7789518.html
Copyright © 2011-2022 走看看