http://acm.hdu.edu.cn/showproblem.php?pid=6071

题意:

1、2、3、4四个点依次形成一个环,现在有个人从2结点出发,每次可以往它相邻的两个结点跑,求最后回到2结点并且不少于K的最短距离。

思路:

官方题解:

最后的答案可以表示为:$ans=p*(2w)+m$,这样一来,m的取值范围就是$(0<=m<2w)$,而因为m的不同,p值也会有所不同。所以我们用 d [ i ] [ m ]表示从起点出发,最后到达 i 点,距离对2w取模为m时的最小距离,这个计算一下最短路即可。

最后只需要枚举m,如果此时d [ 2 ] [ m ]不足K的话,那么就再加上2w补足即可,在所有的m中取最小值。

 #include<iostream>
#include<algorithm>
#include<cstring>
#include<cstdio>
#include<sstream>
#include<vector>
#include<stack>
#include<queue>
#include<cmath>
#include<map>
#include<set>
using namespace std;
typedef long long ll;
typedef pair<int,ll> pll;
const ll INF = ;
const int maxn=1e6+; ll k;
ll m;
ll d[];
ll dis[][maxn];
vector<pll> G[]; struct HeapNode
{
int u; ll w;
HeapNode(int x, ll y) :u(x), w(y){}
bool operator <(const HeapNode& rhs) const{
return w>rhs.w;
}
}; void dijkstra()
{
priority_queue<HeapNode> Q;
for(int i=;i<;i++)
for(int j=;j<=m;j++) dis[i][j]=INF; Q.push(HeapNode(,));
while(!Q.empty())
{
HeapNode p=Q.top(); Q.pop();
int u=p.u;
ll w=p.w; for(int i=;i<G[u].size();i++)
{
int v=G[u][i].first;
ll new_w=G[u][i].second+w;
if(dis[v][new_w%m]>new_w)
{
dis[v][new_w%m]=new_w;
Q.push(HeapNode(v,new_w));
}
}
}
} int main()
{
//freopen("in.txt","r",stdin);
int T;
scanf("%d",&T);
while(T--)
{
scanf("%lld",&k);
for(int i=;i<;i++) G[i].clear();
for(int i=;i<;i++)
{
scanf("%lld",&d[i]);
G[i].push_back(make_pair((i+)%,d[i]));
G[(i+)%].push_back(make_pair(i,d[i]));
}
m=*min(d[],d[]);
dijkstra(); ll ans=INF;
for(int i=;i<m;i++)
{
ll tmp=k-dis[][i];
if (tmp<=) ans=min(ans,dis[][i]);
else ans=min(ans,dis[][i]+(ll)ceil((long double)tmp/m)*m);
}
printf("%lld\n",ans);
}
return ;
}

HDU 6071 Lazy Running(很牛逼的最短路)的更多相关文章

  1. HDU 6071 - Lazy Running | 2017 Multi-University Training Contest 4

    /* HDU 6071 - Lazy Running [ 建模,最短路 ] | 2017 Multi-University Training Contest 4 题意: 四个点的环,给定相邻两点距离, ...

  2. HDU 6071 Lazy Running (同余最短路)

    Lazy Running Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 524288/524288 K (Java/Others)To ...

  3. hdu 6071 Lazy Running 最短路建模

    Lazy Running Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 524288/524288 K (Java/Others) P ...

  4. HDU 6071 Lazy Running (同余最短路 dij)

    Lazy Running Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 524288/524288 K (Java/Others)To ...

  5. HDU 6071 Lazy Running(最短路)

    [题目链接] http://acm.hdu.edu.cn/showproblem.php?pid=6071 [题目大意] 给出四个点1,2,3,4,1和2,2和3,3和4,4和1 之间有路相连, 现在 ...

  6. HDU 6071 Lazy Running (最短路)

    题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=6071 题解 又是一道虐信心的智商题... 首先有一个辅助问题,这道题转化了一波之后就会化成这个问题: ...

  7. 不推荐别的了,IDEA 自带的数据库工具就很牛逼!

    MySQL 等数据库客户端软件市面上非常多了,别的栈长就不介绍了, 其实 IntelliJ IDEA 自带的数据库工具就很牛逼,不信你继续往下看. 本文以 IntelliJ IDEA/ Mac 版本作 ...

  8. 【死磕 NIO】— Proactor模式是什么?很牛逼吗?

    大家好,我是大明哥. 上篇文章我们分析了高性能 IO模型Reactor模式,了解了什么是Reactor 模式以及它的三种常见的模式,这篇文章,大明再介绍另外一种高性能IO模型: Proactor. 为 ...

  9. 很牛逼的android真机调试,手机、平板、电视都可

    1.首先通过路由器,搭建局域网 2.手机开wifi,记住ip地址,平板开wifi,记住ip地址,电视开wifi,记住ip 3.然后再eclipse里面“窗口-首选项-android-ddms里面设置使 ...

随机推荐

  1. Tomcat项目部署的三种方法

    第一种方法如下:直接把我们的项目文件夹放到tomcat里面,在这里我自己做的是一个测试项目oa,如图 启动tomcat,打开浏览器,输入localhost/oa  即可打开你的文件,注意 :访问的时候 ...

  2. No message body writer has been found for class com.alibaba.fastjson.JSONObject, ContentType: */*

    1:当使用 cxf 发布服务时,要求返回值类型为xml,或者json等 @Path("/searchProductByText") @GET @Produces({"ap ...

  3. 用Servlet获取表单数据

    用Servlet获取表单数据 在webroot下新建userRegist2.jsp 代码如下: <%@ page contentType="text/html;charset=gb23 ...

  4. 【Cocos2dx 3.x Lua】CCParallaxNode使用

    我们知道,当我们移动时,我们会看到离我们越近的物体,会移动的越快,越远的物体,比如远处的山会移动的很慢,而最远处的物体,比如太阳几乎不动,这个现象叫视差,而在游戏中模仿视差,可以让玩家感觉到游戏中的角 ...

  5. iOS UI基础-6.0 UIActionSheet的使用

    UIActionSheet是在iOS弹出的选择按钮项,可以添加多项,并为每项添加点击事件. 使用 1.需要实现UIActionSheetDelegate  协议 @interface NJWisdom ...

  6. C# 如何把dataTable以参数的形式传入 sql 存储过程

    ==================================================-- sql代码 示例:CREATE TYPE dbo.Content AS TABLE( ID i ...

  7. AHB-Lite简介

    AHB总线实现了简单的基于burst的传输,数据总线带宽可配置32-1024bit.可以实现简单的fixed pipeline在address/control phase和 data phase之间. ...

  8. CFA

    拜耳色彩滤波阵列(Bayer Color Filter Array, CFA)是非常有名的彩色图片的数字采集格式.由1/2的G,1/4得R,1/4的B组成. 当Image Sensor向外逐行输出数据 ...

  9. OpenStack trove原理及配置实践

    DBaaS是什么? 字面上理解数据库即是服务,简单来说就是以服务的形式为用户提供数据库服务. 在云平台上使用trove有什么优势? 简化IT操作流程,降低使用数据库使用门槛举个例子,曾经我搭建一个LA ...

  10. python isinstance()与type()的区别

    例如在继承上的区别: isinstance() 会认为子类是一种父类类型,考虑继承关系. type() 不会认为子类是一种父类类型,不考虑继承关系. class A: pass class B(A): ...