bzoj1075
题意:
给你一个地图,问从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的更多相关文章
- BZOJ1075 : [SCOI2007]最优驾车drive
设$f[i][j][k]$为到达$(i,j)$,用时为$\frac{k}{5lcm}$小时的最低耗油量,然后DP即可. #include<cstdio> const int N=12,M= ...
- BZOJ第1页养成计划
嗯,用这篇博客当一个目录,方便自己和学弟(妹?)们查阅.不定期更新. BZOJ1000 BZOJ1001 BZOJ1002 BZOJ1003 BZOJ1004 BZOJ1005 ...
随机推荐
- IT运营新世界大会:广通软件开启双态运维大时代
10月28日,第一届“IT运营新世界大会”在北京成功举办.大会上由10家ITOM领域的标杆企业宣布结成“ITOM联盟”. 广通软件(证券代码:833322)作为大会的创始成员全程推动见证了这一历史时刻 ...
- Python并行编程(十四):异步编程
1.基本概念 除了顺序执行和并行执行的模型以外,还有异步模型,这是事件驱动模型的基础.异步活动的执行模型可以只有一个单一的主控制流,能在单核心系统和多核心系统中运行. 在并发执行的异步模型中,许多任务 ...
- (windows下)tomcat优化--内存,并发.缓存三方面优化
一.内存 注: jdk1.8中废弃了-XX:PermSize和-XX:MaxPermSize的持久态(存放常量.静态变量区)配置, 多了一个元数据区(Metadata Space:默认为内存的0.2% ...
- go-003-基础语法
1.行分隔符 一行代表一个语句结束. 如果一行多个,使用“;”分割,不推荐使用,建议使用默认一行一个语句 2.标识符 标识符用来命名变量.类型等程序实体.一个标识符实际上就是一个或是多个字母(A~Z和 ...
- Flask系列(七)Flask中的wtforms使用
一.简单介绍flask中的wtforms WTForms是一个支持多个web框架的form组件,主要用于对用户请求数据进行验证. 安装: pip3 install wtforms 二.简单使用wtfo ...
- 破解NET的四大神器(转)
原文地址 原本这篇文章可以更早一星期写出来与大家分享,由于某方面的原因耽搁到现在,心里竟有那么一点好像对不住大家的感觉.这当然与神器有关,因为我发现利用这四大神器我似乎觉得几乎所有的NET程序破解都不 ...
- [翻译] Rails::Railtie
原文:http://api.rubyonrails.org/classes/Rails/Railtie.html Railtie 是 Rails 框架的核心,提供几个钩子来扩展或修改 Rails 的 ...
- SQL case when 多条件查询
基于列的逻辑表达式,其实就是CASE表达式.可以用在SELECT,UPDATE,DELETE,SET以及IN,WHERE,ORDER BY和HAVING子句之后.下面给个简单示例:
- pug 在线文档
https://pugjs.org/zh-cn/api/getting-started.html
- Python基础笔记之同时装了Python3和Python2,怎么在命令行使用pip
我们在安装Python3(>=3.3)时,Python的安装包实际上在系统中安装了一个启动器py.exe,默认放置在文件夹C:\Windows\下面.这个启动器允许我们指定使用Python2还是 ...