只错样例5一个,192.15被输成192.32,是不是精度太低了!
#include <iostream>
using namespace std;
long double n, l, c, v, p[505], d[505], f[505];
int main()
{
cin >> l >> c >> v >> p[0] >> n;
for (int i = 1; i <= n; i++)
cin >> d[i] >> p[i];
for (int i = 1; i <= n+1; i++)
{
f[i] = 300000;
for (int j = i-1; j >= 0; j--)
{
if (c * v >= d[i] - d[j])
{
f[i] = min(f[i], f[j] + p[j] * (d[i] - d[j]) / v);
}
}
}
long double ans = 300000;
for (int i = n; i >= 0; i--)
{
if (c * v >= l - d[i])
{
ans = min(ans, f[i] + p[i] * (l - d[i]) / v);
}
}
if (ans == 300000)
cout << "No Solution";
else
{
printf("%.2Lf", ans);
}
return 0;
}