BZOJ1744: [Usaco2005 oct]Skiing 奶牛滑雪
n<=100 * m<=100的地图,每个数绝对值不超过25,从1,1到n,m,一开始速度v,从数字A走到数字B速度会变成v*2^(A-B),求到终点最短时间。
可以发现,相同的数字出发的速度是一样的,和(1,1)位置的数的差做2的指数再乘v,而一个点只有四条边,跑个最短路即可。
然后n,m打反调了1.5h。。
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<algorithm>
#include<queue>
//#include<iostream>
using namespace std; int n,R,C,v;
#define maxn 10011
#define maxm 80011
int a[][];double pw[];
struct Graph
{
struct Edge{int to,next;double v;}edge[maxm];int first[maxn],le;
Graph() {memset(first,,sizeof(first));le=;}
void in(int x,int y,double v) {Edge &e=edge[le];e.to=y;e.v=v;e.next=first[x];first[x]=le++;}
double dis[maxn];bool vis[maxn];
struct qnode
{
int id;double v;
bool operator > (const qnode &b) const {return v>b.v;}
};
priority_queue<qnode,vector<qnode>,greater<qnode> > q;
double dijkstra(int s,int t)
{
memset(vis,,sizeof(vis));
for (int i=;i<=n;i++) dis[i]=1e15;dis[s]=;
q.push((qnode){s,});
while (!q.empty())
{
const int now=q.top().id;const double d=q.top().v;q.pop();
if (vis[now]) continue;
vis[now]=;
for (int i=first[now];i;i=edge[i].next)
{
const Edge &e=edge[i];
if (dis[e.to]>d+e.v)
{
dis[e.to]=d+e.v;
q.push((qnode){e.to,dis[e.to]});
}
}
}
return dis[t];
}
}g;
int main()
{
pw[]=1.0;
for (int i=;i<=;i++) pw[i]=pw[i-]*;
for (int i=-;i>=-;i--) pw[i]=pw[i+]/;
scanf("%d%d%d",&v,&R,&C);
for (int i=;i<=R;i++)
for (int j=;j<=C;j++)
scanf("%d",&a[i][j]);
n=R*C;
for (int i=;i<=R;i++)
for (int j=;j<=C;j++)
{
double now=1.0/(pw[a[][]-a[i][j]]*v);
int id=(i-)*C+j;
if (j>) g.in(id,id-,now);
if (j<C) g.in(id,id+,now);
if (i>) g.in(id,id-C,now);
if (i<R) g.in(id,id+C,now);
}
printf("%.2f\n",g.dijkstra(,n));
return ;
}
BZOJ1744: [Usaco2005 oct]Skiing 奶牛滑雪的更多相关文章
- bzoj1745[Usaco2005 oct]Flying Right 飞行航班*
bzoj1745[Usaco2005 oct]Flying Right 飞行航班 题意: n个农场,有k群牛要从一个农场到另一个农场(每群由一只或几只奶牛组成)飞机白天从农场1到农场n,晚上从农场n到 ...
- BZOJ1708: [Usaco2007 Oct]Money奶牛的硬币
1708: [Usaco2007 Oct]Money奶牛的硬币 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 513 Solved: 329[Submi ...
- BZOJ 1708: [Usaco2007 Oct]Money奶牛的硬币( dp )
背包dp.. -------------------------------------------------------------------------------- #include< ...
- BZOJ 1684: [Usaco2005 Oct]Close Encounter
题目 1684: [Usaco2005 Oct]Close Encounter Time Limit: 5 Sec Memory Limit: 64 MB Description Lacking e ...
- BZOJ 1708: [Usaco2007 Oct]Money奶牛的硬币
1708: [Usaco2007 Oct]Money奶牛的硬币 Description 在创立了她们自己的政权之后,奶牛们决定推广新的货币系统.在强烈的叛逆心理的驱使下,她们准备使用奇怪的面值.在传统 ...
- 1684: [Usaco2005 Oct]Close Encounter
1684: [Usaco2005 Oct]Close Encounter Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 387 Solved: 181[ ...
- 1708: [Usaco2007 Oct]Money奶牛的硬币
1708: [Usaco2007 Oct]Money奶牛的硬币 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 544 Solved: 352[Submi ...
- bzoj1708:[Usaco2007 Oct]Money奶牛的硬币(完全背包
1708: [Usaco2007 Oct]Money奶牛的硬币 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 797 Solved: 540[Submi ...
- bzoj1708 [Usaco2007 Oct]Money奶牛的硬币 背包dp
[Usaco2007 Oct]Money奶牛的硬币 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 852 Solved: 575[Submit][Sta ...
随机推荐
- AJPFX简述Context.startService()和Context.bindService
Context.startService()和Context.bindService 服务不能自己运行,需要通过调用Context.startService()或Context.bindService ...
- 【学习笔记】Base64编码解码原理及手动实现(C#)
1.[Base64编码原理]@叶落为重生 -base64的编码都是按字符串长度,以每3个8bit的字符为一组,-然后针对每组,首先获取每个字符的ASCII编码,-然后将ASCII编码转换成8bit的二 ...
- IOS动画之抖动
-(void)shakeView:(UIView*)viewToShake { CGFloat t =2.0; CGAffineTransform translateRight =CGAffineT ...
- Sql Server 2012 分页方法分析(offset and fetch)
最近在分析 Sql Server 2012 中 offset and fetch 的新特性,发现 offset and fetch 无论语法的简洁还是功能的强大,都是相当相当不错的.其中 offse ...
- FPGA-信号边缘检测
在FPGA逻辑电路中,输入信号的边缘检测是一个常用的操作,这算是FPGA的基本功之一. 信号边缘检测应用十分广泛,例如:通信协议的时序操作,按键的检测等,都应用到按键的检测.按键的检测分为上升沿和下降 ...
- 洛谷 P2053 [SCOI2007]修车
题目描述 同一时刻有N位车主带着他们的爱车来到了汽车维修中心.维修中心共有M位技术人员,不同的技术人员对不同的车进行维修所用的时间是不同的.现在需要安排这M位技术人员所维修的车及顺序,使得顾客平均等待 ...
- (转)SpringMVC学习(九)——SpringMVC中实现文件上传
http://blog.csdn.net/yerenyuan_pku/article/details/72511975 这一篇博文主要来总结下SpringMVC中实现文件上传的步骤.但这里我只讲单个文 ...
- JavaFX Chart设置数值显示
一.XYChart import javafx.application.Application;import javafx.geometry.NodeOrientation;import javafx ...
- es6数组新特性
1.Array.from 从类数组和可遍历对象中创建Array的实例 类数组对象包括:函数中的arguments.由document.getElementsByTagName()返回的nodeList ...
- 判断请求是否为ajax
判断请求是否为ajax 转载:http://www.cnblogs.com/tony-jingzhou/archive/2012/07/30/2615612.html x-requested-with ...