比赛 |
清华集训2017模板练习 |
评测结果 |
AAAAAATTTT |
题目名称 |
货币兑换 |
最终得分 |
60 |
用户昵称 |
Alex丶Baker |
运行时间 |
4.010 s |
代码语言 |
C++ |
内存使用 |
4.89 MiB |
提交时间 |
2017-07-17 14:18:29 |
显示代码纯文本
#include<bits/stdc++.h>
#define inf (1<<30)
#define il inline
#define RG register
#define ll long long
using namespace std;
double f[100010],x[100010],y[100010],a[100010],b[100010],r[100010];
int n,s;
il int gi(){
RG int x=0,q=1; RG char ch=getchar(); while ((ch<'0' || ch>'9') && ch!='-') ch=getchar();
if (ch=='-') q=-1,ch=getchar(); while (ch>='0' && ch<='9') x=x*10+ch-48,ch=getchar(); return q*x;
}
il void work(){
n=gi(),s=gi(); for (RG int i=1;i<=n;++i) scanf("%lf%lf%lf",&a[i],&b[i],&r[i]);
f[1]=(double)s,x[1]=r[1]*f[1]/(r[1]*a[1]+b[1]),y[1]=f[1]/(r[1]*a[1]+b[1]);
for (RG int i=2;i<=n;++i){
for (RG int j=0;j<n;++j) f[i]=max(f[i],a[i]*x[j]+b[i]*y[j]);
f[i]=max(f[i],f[i-1]);
x[i]=r[i]*f[i]/(r[i]*a[i]+b[i]),y[i]=f[i]/(r[i]*a[i]+b[i]);
}
printf("%0.3lf",f[n]); return;
}
int main(){
freopen("cash.in","r",stdin);
freopen("cash.out","w",stdout);
work();
return 0;
}