| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
SC新开辟了一种错误方式、、网上都搜不到#include <cstdio>
#include <cstring>
// #include <algorithm>
// #include <cassert>
// using std::sort;
#include <cmath>
#define f(x,y,z) for(int x = (y),__ = (z);x < __;++x)
#define g(x,y,z) for(int x = (y),__ = (z);x <= __;++x)
#define fd(x,y,z) for(int x = (y),__ = (z);x > __;--x)
#define gd(x,y,z) for(int x = (y),__ = (z);x >= __;--x)
#define MAX 10024
#define EPS 1e-6
int n,k;
double len[MAX];
double ll = 0.0,rr,m(0.0);
inline bool check(double x){
int tee = 0;
f(i,0,n){
tee += (int)(len[i] / x);
}
return tee >= k;
}
double sum,max;
int main(){
scanf("%d%d",&n,&k);
f(i,0,n){
scanf("%lf",&len[i]);
sum += len[i];
if (max < len[i])max = len[i];
}
if (sum * 100 < k){
puts("0.00");
return 0;
}
rr = max;
while (rr - ll > EPS){
// m = ll + (rr - ll) / 2;
m = (ll + rr) / 2.0;
if (check(m))ll = m;
else rr = m;
}
// if (ll >= 0.01)printf("%.2lf\n",ll);
if (rr >= 0.01)printf("%.2lf\n",floor(rr * 100) / 100);
// if (rr >= 0.01)printf("%.2lf\n",rr);
else puts("0.00");
return 0;
}
以上代码是二分的
AC
可是如果是把while循环改成for循环(100次),能过样例但是WA;
如果改成200次就连样例都过不了了…………
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator