我TM调吐
  • 板块P1180 驾车旅游
  • 楼主l55584
  • 当前回复0
  • 已保存回复0
  • 发布时间2021/11/19 20:45
  • 上次更新2023/11/4 00:06:16
查看原帖
我TM调吐
184271
l55584楼主2021/11/19 20:45
#include <bits/stdc++.h>
using namespace std;
double dis,m,c,ans;
int n;
const int N=1e4+1;
double d[N];double cost[10001];
double mmin=-1;bool flag;
double g(double x)
{
	return double(int(x*10+0.5)/10.0);
}
void dfs(int t,double now,double ha)
{
	if(t==n)
	{
		double te;te=now;
		if((dis-d[t])>ha*c||ha*2<m) te+=(m-ha)*cost[t]+20.0;
		if(mmin==-1) mmin=te;
		else mmin=min(mmin,te);
		return;
	}flag=0;
	if((d[t+1]-d[t])<=c*ha)
	dfs(t+1,now,ha-(d[t+1]-d[t])/c);
	else dfs(t+1,now+g((m-ha)*cost[t])+20.0,m-(d[t+1]-d[t])/c),flag=1;
	if(ha<m/2&&!flag)
	{
		dfs(t+1,now+g((m-ha)*cost[t])+20.0,m-(d[t+1]-d[t])/c);
	}
	return;
}
int main()
{
	cin>>dis;
	cin>>m>>c>>ans;
	cin>>n;
	for(int i=1;i<=n;i++) cin>>d[i]>>cost[i];
	dfs(1,0,m-d[1]/c);
	//double o=int((ans+mmin)*10)/10.0;
	//cout<<o;
	printf("%.1f",ans+mmin);
	return 0;
}

真 的 调 崩 了

救救我吧。。。。

2021/11/19 20:45
加载中...