搜索-O - 切绳子问题(二分)

//题意:有n条绳子,分成k段相等的,问能使得最长为多长
思路:经典二分
输入n 段绳子的完了之后,计算 k段平均长度,在0-sum/k, 之间二分,如果分的绳子多余k 段的话,说明绳子太短了,需要调整二分区间。
还有 这个题的输入输出 要用c 的方法。(keng)

#if 0
#include
#include
#include
#define exp 1e-8 
using namespace std;
int n,k;
double a[10001],sum;

int go(double s)        
{       
	int cnt=0;
	for(int i=0; i=k) return 1;                     //大于等于
	 else return 0;
}

int main()
{
	ios::sync_with_stdio(false) ;
double mid ,l , r;
while(cin>>n>>k )
{
	if(n==0 && k==0) break;
	
	sum=0;
 for(int i=0; i>a[i];
  sum+=a[i];
 }
 sum/=k;
 l=0;r=sum;
 while(fabs(l-r)>exp)
 {
 	mid=(l+r)/2;
 	if(go(mid)) 
 	l=mid;
 	else 
 	r=mid;
 }
 printf("%0.2f\n",l);	
}	
		
}

#endif

你可能感兴趣的:(ACM-,搜索(DFS,BFS),二分)