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