zoukankan      html  css  js  c++  java
  • POJ_1064 二分搜索

    /*POJ 1064
     *题目大意:有N条绳子,他们的长度分别为Li,如果从他们中切割K条长度相同的绳子的话,这K条绳子每条最长能有多长?答案保留到小数点后2位
     *算法分析:这个问题用二分搜索可以非常容易的求得答案。让我们套用二分搜索的模型试着解决这个问题。
     *   令:条件C(x):=可以得到K条长度为x的绳子
     *		则问题变成了求满足C(x)条件的最大的x。在区间初始化时, 只需使用充分大的数INF作为上界即可
     *      现在的问题是是否可以高效的判断C(x)。由于长度为Li的绳子最多可以切出floor(Li/x)段长度为x的绳子,因此
     *							C(x) = (floor(Li/x)的总和是否大于或等于K)、、它可以在O(N)的时间内被判断出来。 
    */
    int N, k;
    double L[MAX_N];
    
    //判断是否满足条件 
    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;
    	}
    	
    	printf("%.2f
    ",floor(ub*100) / 100);
    }

  • 相关阅读:
    sed命令
    awk命令
    let命令
    首先看一下友晶DE-SOC开发板的user manual
    嵌入式FIFO核的调用
    嵌入式ROM核的调用
    用嵌入式块RAM IP核配置一个双口RAM
    如何利用Visio设计一个系统的结构图
    uart通讯协议
    按键消抖试验及一个数码管电子时钟的设计
  • 原文地址:https://www.cnblogs.com/Tovi/p/6194820.html
Copyright © 2011-2022 走看看