BZOJ 4112 Pipe Stream [二分]

来源:互联网 发布:小学生教育软件 编辑:程序博客网 时间:2024/06/10 15:34

不要问我为什么连题目都没有的题我能AC。。。。
枚举答案,考虑将速度区间等长地划分成若干个小区间。

#include<cstdio>#include<cmath>#include<algorithm>using namespace std;int T,i,n;double l,v1,v2,t,s,nf,v;void solve(){  scanf("%lf%lf%lf%lf%lf",&l,&v1,&v2,&t,&s);  for(v=v2,n=1,i=0;;i++){    if(n<=0){puts("impossible");return;}    if(t*n>=v-v1){printf("%d\n",i);return;}    nf=ceil(max(v-l/s/(i+1)-t,0.0)/t);    n=(n-nf)*2;    v-=nf*t;  }}int main(){  for(scanf("%d",&T);T--;solve());  return 0;}

这里写图片描述