| ||||||||||
| 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 | |||||||||
Re:SC新开辟了一种错误方式、、网上都搜不到In Reply To:SC新开辟了一种错误方式、、网上都搜不到 Posted by:imcaffrey at 2015-01-27 22:45:47 > #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