| ||||||||||
| 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 | |||||||||
为什么将初始左端点设置为1就WA呢#include<iostream>
#include<cstring>
#include<math.h>
#include<stdlib.h>
#include<cstring>
#include<cstdio>
#include<utility>
#include<algorithm>
#include<map>
#include<iomanip>
using namespace std;
long long int n,k;
const int maxn=100005;
const double inf=200005.0;
double ary[maxn];
int div(double x){//每条长度为x可以分为几段
int ans=0;
for(int i=1;i<=n;i++){
ans+=(int)(ary[i]/x);
}
return ans>=k;
}
int main()
{
ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
//freopen("input.txt","r",stdin);
while(cin>>n>>k){
for(int i=1;i<=n;i++)cin>>ary[i];
sort(ary+1,ary+1+n);
//这里left>0会错。。。
double left=0,right=ary[n];
double mid=0;
for(int i=1;i<=100;i++){
mid=(left+right)/2;
//分割段数过多说明木板长度小,所以这里是左端点
if(div(mid))left=mid;
else right=mid;
}
printf("%.2f\n",floor(left*100)/100);
}
return 0;
}
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator