RT,样例过不去,想问一下是double精度问题吗?
Code:
#include<iostream>
#include<iomanip>
using namespace std;
typedef double de;
de INF=1e9;
de sx[10005],tx[10005],vx[10005],eu;
int n;
de a[10005];
de dfs(int k,de dist,de regi){
de l,r,mid,ans=INF;
l=max(de(0),(de)vx[k]);r=(de)(100005);
int cnt=60;
if(k==n+1){
return regi;
}
while(cnt--){
mid=(de)(l+r)/2.0;
if(tx[k]*sx[k]*(mid-vx[k])*(mid-vx[k])<=dist){
ans=min(ans,dfs(k+1,dist-tx[k]*sx[k]*(mid-vx[k])*(mid-vx[k]),regi+(de)sx[k]/mid));
l=mid;
}
else{
r=mid;
}
}
return ans;
}
int main(){
cin>>n;
de ques;
cin>>eu;
for(int i=1;i<=n;i++){
cin>>sx[i]>>tx[i]>>vx[i];
}
cout<<fixed<<setprecision(8)<<dfs(1,eu,(de)0);
return 0;
}