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 ...
随机推荐
- 约会安排---hdu4553(线段树,麻烦的区间覆盖)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4553 算是poj3667的加强版,建立两颗线段树,一个是DS区间,另一个是NS区间.那么根据题意, ...
- Logback配置讲解
复制文件并粘贴到项目下: logback.xml: <?xml version="1.0" encoding="UTF-8"?> <confi ...
- logger类
日志模块logging的四大组件: logger: 志类应用程序往往通调用提供api记录志handler: 志信息处理志发送(保存)同目标域filter: 志信息进行滤formatter:志格式化 L ...
- marathon-lb-什么是服务发现?(转)
摘要: 将容器应用部署到集群时,其服务地址,即IP和端口, 是由集群系统动态分配的.那么,当我们需要访问这个服务时,如何确定它的地址呢?这时,就需要服务发现(Service Discovery)了.本 ...
- 1040. 有几个PAT(25)
原题: https://www.patest.cn/contests/pat-b-practise/1040 思路: 先给大家扔个测试PAPAATTPATTT, 人工查一下这段字符串能组成 34个PA ...
- 2017-2018 ACM-ICPC Pacific Northwest Regional Contest (Div. 1) Solution
A - Odd Palindrome 水. #include <bits/stdc++.h> using namespace std; #define N 110 char s[N]; i ...
- MFC中Doc类获取View类的方法(SDI)
从view类中获取Doc的方法如下: CYourDoc* pDoc = GetDocument(); 这个函数已经写好,所以无需自己添加,使用时直接利用pDoc即可. 若反过来,从Doc中获取View ...
- Linux学习笔记之Linux计划任务Crontab
0x00 cron 简介 cron 是 UNIX, SOLARIS,LINUX 下的一个十分有用的工具.通过 cron 脚本能使计划任务定期地在系统后台自动运行. 0x01 cron 命令 cront ...
- js输出大段html文档简便方法
原文链接:https://zhidao.baidu.com/question/586477237.html 把要输出的html全部写在某个id中,然后复制过去,你想放多少都行 <script t ...
- BCG控件初步领略
BCGPVisualStudioGUIDemo 这个界面很不错呀,如果能够实现这种效果,能够解决系列问题 画图程序,这种界面非常先进.用于石材大板等非常优秀. email的效果 这种东西如果效果不错, ...