题意:

给你一个地图,问从x1,y1->x2,y2,要走的路最短,问

耗油和速度

题解:

首先把他们转到左下角->右上角

然后只能往上或往下

考虑到可能有小数

所以都乘上他们的公倍数

然后就是dp

代码:

#include<bits/stdc++.h>
using namespace std;
const int N=,M=;
const double inf=1e15;
int n,L,lcm,lim,i,j,k,p,x,y,a[N],b[N],xs,ys,xt,yt,t1,t2,ans1=-,ans2;
double f[][N][M],w[N];
int gcd(int a,int b){return b?gcd(b,a%b):a;}
void up(double&a,double b){if(a>b)a=b;}
int cal(int x)
{
x*=;
return x/lcm+(x%lcm>);
}
int main()
{
scanf("%d%d",&n,&L);
for (int i=;i<=;i++)w[i]=1.0*L/(80.0-0.75*i*i);
for (int i=;i<=n;i++)scanf("%d",&a[i]),a[i]/=;
for (int i=;i<=n;i++)scanf("%d",&b[i]),b[i]/=;
for (int i=;i<=n;i++)x=max(max(a[i],b[i]),x);
for (int i=lcm=;i<=x;i++)lcm=lcm*i/gcd(lcm,i);
scanf("%d%d%d%d%d%d",&xs,&ys,&xt,&yt,&t1,&t2);
lim=t2*lcm/;
if (xs>xt)swap(xs,xt),swap(ys,yt);
if (ys>yt)
{
for (int i=,j=n;i<j;i++,j--)swap(a[i],a[j]);
ys=n-ys+,yt=n-yt+;
}
for (int j=ys;j<=yt;j++)
for (int k=;k<=lim;k++)f[][j][k]=inf;
f[][ys][]=;
for (int i=xs;i<=xt;i++,p^=)
{
for (int j=ys;j<=yt;j++)
for (int k=;k<=lim;k++)f[p^][j][k]=inf;
for (int j=ys;j<=yt;j++)
for (int k=;k<=lim;k++)
if (f[p][j][k]<inf)
{
if (j<yt)
for (int x=b[i];x;x--)
{
y=k+lcm/x*L;
if (y<=lim)up(f[p][j+][y],f[p][j][k]+w[x]);
}
if (i<xt)
for (int x=a[j];x;x--)
{
y=k+lcm/x*L;
if (y<=lim)up(f[p^][j][y],f[p][j][k]+w[x]);
}
}
}
for (int k=;k<=lim;k++)
if (k*>=t1*lcm&&f[p^][yt][k]<inf)
{
if (ans1<)ans1=k;
if (!ans2||f[p^][yt][k]+1e-<f[p^][yt][ans2])ans2=k;
}
if (ans1<)
{
puts("No");
return ;
}
printf("%d %.2f\n%d %.2f",cal(ans1),f[p^][yt][ans1],
cal(ans2),f[p^][yt][ans2]);
return ;
}

bzoj1075的更多相关文章

  1. BZOJ1075 : [SCOI2007]最优驾车drive

    设$f[i][j][k]$为到达$(i,j)$,用时为$\frac{k}{5lcm}$小时的最低耗油量,然后DP即可. #include<cstdio> const int N=12,M= ...

  2. BZOJ第1页养成计划

    嗯,用这篇博客当一个目录,方便自己和学弟(妹?)们查阅.不定期更新. BZOJ1000   BZOJ1001   BZOJ1002   BZOJ1003   BZOJ1004   BZOJ1005   ...

随机推荐

  1. yii2框架2 (二)项目结构

    原文 http://www.yiichina.com/doc/guide/2.0/structure-overview 应用结构 应用中最重要的目录和文件(假设应用根目录是 basic): basic ...

  2. iOS邮箱、手机号等常用验证功能 判断字符串是否int float

    手机号验证 /* 手机号码 13[0-9],14[5|7|9],15[0-3],15[5-9],17[0|1|3|5|6|8],18[0-9] 移动:134[0-8],13[5-9],147,15[0 ...

  3. 为什么Log.nsf中存储的日志只有最近7天的原因

    是由于Domino服务器的notes.ini配置文件中有一行参数: Log = logfilename, log_option, not_used, days, size 比如:Log=log.nsf ...

  4. 找回 linux root密码的几种方法

    第1种方法: 1.在系统进入单用户状态,直接用passwd root去更改  2.用安装光盘引导系统,进行linux rescue状态,将原来/分区挂接上来,作法如下: Java代码  #> c ...

  5. 2018-2019 ACM-ICPC Nordic Collegiate Programming Contest (NCPC 2018) Solution

    A. Altruistic Amphibians Upsolved. 题意: $有n只青蛙,其属性用三元组表示 <l_i, w_i, h_i> l_i是它能跳的高度,w_i是它的体重,h_ ...

  6. SQL 根据条件取不同列中的值来排序

    1  有时候排序比较复杂,比如:领导对工资在1000到2000元之间的员工更感兴趣,于是要求工资在这个范围内的员工排在前面,以便优先查看 对于这种要求我们可以在查询中新生成一列,用多列排序的方法处理代 ...

  7. http://www.kankanews.com/ICkengine/archives/18078.shtml

    https://github.com/lealife/WeiXin-Private-API

  8. MySQL事务之-2

    在上一篇中我们提到了MySQL的事务特性,这一片主要讲述事务的实现. 事务的隔离性由锁来实现.原子性,一致性,持久性通过数据库的redo和undo log来实现. redo恢复提交事务修改页的操作,而 ...

  9. Python3:Requests模块的异常值处理

    Python3:Requests模块的异常值处理 用Python的requests模块进行爬虫时,一个简单高效的模块就是requests模块,利用get()或者post()函数,发送请求. 但是在真正 ...

  10. 2018-2019-1 20189215 《Linux内核原理与分析》第七周作业

    <庖丁解牛>第六章书本知识总结 操作系统内个实现操作系统的三大管理功能:进程管理.内存管理.文件系统.分别对应<操作系统原理>中最重要的3个抽象概念是进程.虚拟内存和文件. L ...