POJ_1064 2 점 검색

737 단어 이분 수색poj
/*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); }

좋은 웹페이지 즐겨찾기