题目链接:http://codeforces.com/gym/101873/problem/C

题意:

这是七月的又一个阳光灿烂的日子,你决定和你的小女儿一起度过快乐的一天。因为她真的很喜欢隔壁镇上的仙女公园,所以你决定到那儿去玩一天。

你妻子同意开车送你去公园接你。她非常准时,所以她确切地告诉你她什么时候会到公园的前门来接你,而你必须恰好在那个时间到那里。因为你显然也不想在外面等,这样会让你的小女儿伤心——她本可以在公园里多待些时间。

现在你必须考虑游玩计划。你知道你什么时候到达,什么时候离开。公园由若干游玩设施组成,两两之间由人行道相连。进入公园是免费的,但你每次使用在公园里的某项设施,都必须付一次相应费用。你已经知道玩每一项游玩设施各自需要多长时间、花多少钱。

当你穿过公园时,你显然不能在沿着公园走的时候跳过游乐设施(即使乔伊已经用了),否则乔伊会很伤心。因为乔非常喜欢公园,她很乐意玩同一个项目不止一次。在两个游乐项目之间行走需要一定的时间。

因为你是一个有计划的家长,所以当你在公园的时候,你要尽量少花钱。你能计算至少要花多少钱吗?

输入:

一行,一个整数 $x(1 \le x \le 1e3)$ 代表你们在公园玩的确切时间。

一行,三个整数 $n,m,t(1 \le n,m,t \le 1e3)$,代表有 $n$ 个娱乐设施, 之间有 $m$ 条人行道连接,走人行道需要花费 $t$ 分钟。

$m$ 行,每行 $a,b$ 代表设施 $a,b$ 之间有一条小路。

$n$ 行,每行 $t,p$ 代表该项游乐设施花费 $t$ 分钟,$p$ 元。

你从设施 $1$ 出发,最后必须回到设施 $1$。

Sample Input 1
4
4 4 1
1 2
2 3
3 4
4 1
1 2
2 1
5 4
3 3
Sample Output 1
8

Sample Input 2
6
4 4 1
1 2
2 3
3 4
4 1
1 2
2 1
5 4
3 3
Sample Output 2
5

题解:

按花费钱的数量跑最短路,$dist[v][k]$ 表示在 $k$ 时刻走到点 $v$ 最少花费 $dist[v][t]$ 元。

AC代码:

#include<bits/stdc++.h>
using namespace std;
const int maxn=1e3+; int x;
int n,m,w;
int t[maxn],p[maxn]; struct Edge{
int u,v,w;
Edge(){}
Edge(int _u,int _v){u=_u, v=_v;}
};
vector<Edge> E;
vector<int> G[maxn];
void addedge(int u,int v)
{
E.push_back(Edge(u,v));
G[u].push_back(E.size()-);
} struct Qnode
{
int v,k,d;
Qnode(){}
Qnode(int _v,int _k,int _d) {
v=_v, k=_k, d=_d;
}
bool operator<(const Qnode& oth)const {
return d>oth.d;
}
};
int dist[maxn][maxn];
bool vis[maxn][maxn];
void dijkstra()
{
memset(dist,0x3f,sizeof(dist));
memset(vis,,sizeof(vis)); priority_queue<Qnode> Q;
if(t[]<=x) dist[][t[]]=p[];
else return;
Q.push(Qnode(,t[],p[]));
while(!Q.empty())
{
int u=Q.top().v, k=Q.top().k; Q.pop();
if(vis[u][k]) continue;
vis[u][k]=;
if(k+t[u]<=x && dist[u][k+t[u]]>dist[u][k]+p[u])
{
dist[u][k+t[u]]=dist[u][k]+p[u];
Q.push(Qnode(u,k+t[u],dist[u][k+t[u]]));
}
for(int i=;i<G[u].size();i++)
{
Edge &e=E[G[u][i]]; int v=e.v;
if(k+w+t[v]>x) continue;
if(!vis[v][k+w+t[v]] && dist[v][k+w+t[v]]>dist[u][k]+p[v])
{
dist[v][k+w+t[v]]=dist[u][k]+p[v];
Q.push(Qnode(v,k+w+t[v],dist[v][k+w+t[v]]));
}
}
}
} int main()
{
cin>>x>>n>>m>>w;
for(int i=,u,v;i<=m;i++)
{
cin>>u>>v;
addedge(u,v);
addedge(v,u);
}
for(int i=;i<=n;i++) cin>>t[i]>>p[i];
dijkstra();
if(vis[][x]) cout<<dist[][x]<<endl;
else cout<<"It is a trap."<<endl;
}

Gym 101873C - Joyride - [最短路变形][优先队列优化Dijkstra]的更多相关文章

  1. POJ 3635 - Full Tank? - [最短路变形][优先队列优化Dijkstra]

    题目链接:http://poj.org/problem?id=3635 Description After going through the receipts from your car trip ...

  2. ZOJ - 3946-Highway Project(最短路变形+优先队列优化)

    Edward, the emperor of the Marjar Empire, wants to build some bidirectional highways so that he can ...

  3. POJ 1511 Invitation Cards(单源最短路,优先队列优化的Dijkstra)

    Invitation Cards Time Limit: 8000MS   Memory Limit: 262144K Total Submissions: 16178   Accepted: 526 ...

  4. poj 1511 优先队列优化dijkstra *

    题意:两遍最短路 链接:点我 注意结果用long long #include<cstdio> #include<iostream> #include<algorithm& ...

  5. hdu 1874(最短路 Dilkstra +优先队列优化+spfa)

    畅通工程续 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submi ...

  6. 最短路模板|堆优化Dijkstra,SPFA,floyd

    Ⅰ:Dijkstra单源点最短路 1.1Dijkstra const int MAX_N = 10000; const int MAX_M = 100000; const int inf = 0x3f ...

  7. BZOJ 3040 最短路 (堆优化dijkstra)

    这题不是裸的最短路么?但是一看数据范围就傻了.点数10^6,边数10^7.这个spfa就别想了(本来spfa就是相当不靠谱的玩意),看来是要用堆优化dijkstra了.但是,平时写dijkstra时为 ...

  8. POJ-1797Heavy Transportation,最短路变形,用dijkstra稍加修改就可以了;

    Heavy Transportation Time Limit: 3000MS   Memory Limit: 30000K          Description Background  Hugo ...

  9. 【BZOJ】BZOJ3040 最短路 线段树优化Dijkstra

    题目描述 N个点,M条边的有向图,求点1到点N的最短路(保证存在). 1<=N<=1000000,1<=M<=10000000 输入格式 第一行两个整数N.M,表示点数和边数. ...

随机推荐

  1. SuperObject生成示例

    var jo,jEntity,jSubEntity: ISuperObject; jaOrder,jaEntity,jaSubEntity: ISuperObject; i,j,entityCount ...

  2. Elasticsearch集成HanLP分词器-个人学习

    1.通过git下载分词器代码. 连接如下:https://gitee.com/hualongdata/hanlp-ext hanlp官网如下:http://hanlp.linrunsoft.com/ ...

  3. 关于现在互联网是否还有机会类的价值文章,为什么有人掉进互联网创业的坑里,可能因为ta不懂这些

     --也是带着问题看这篇文章的,面临BAT时代的互联网创业者如何带领自己的公司存活成长,本文有些理念很有意思,前辈企业家是抓住机会干企业,现代化是发现问题最先解决干企业,最难的.同仁意愿不强的大问题才 ...

  4. 构建自己的 Smart Life 私有云(二)-> 连通 IFTTT & Slack

    博客搬迁至https://blog.wangjiegulu.com RSS订阅:https://blog.wangjiegulu.com/feed.xml 原文链接:https://blog.wang ...

  5. 浅谈 CSS 预处理器: 为什么要使用预处理器?

    CSS 自诞生以来,基本语法和核心机制一直没有本质上的变化,它的发展几乎全是表现力层面上的提升.最开始 CSS 在网页中的作用只是辅助性的装饰,轻便易学是最大的需求:然而如今网站的复杂度已经不可同日而 ...

  6. Python实现下载文件的三种方法

    下面来看看三种方法是如何来下载zip文件的:方法一: import urllib print "downloading with urllib" url = 'http://www ...

  7. 【iCore4 双核心板_ARM】例程三十五:HTTP_IAP_ARM实验——更新升级STM32

    实验现象: 核心代码: int main(void) { led.initialize(); //LED³õʼ»¯ key.initialize(); if(ARM_KEY_STATE == KEY ...

  8. power designer 16.5 使用总结[转]

    测试环境:power designer 16.5.vs2010.win7 对于破解版的power designer经常出现崩溃.停止工作的情况 请运行pdlegacyshell16.exe,不要运行P ...

  9. 想拥有一款钢铁侠Jarvis管家的软件吗?

    漫威的<钢铁侠>电影很好看,里面钢铁侠的管家Jarvis,可以说非常酷.既能管理日常生活,还能组装钢铁战衣.跟随托尼出生入死,形影不离. 那么现实生活中,想不想拥有这一款软件?看看下面这个 ...

  10. 分析“HTTP500内部服务器错误”解决方法

    系统中出现的一些故障是用户最不想看到的,有时候遇到一些故障都到折腾个大半天才能够搞定.打开网站出现了HTTP500内部服务器错误的提示,无法法查看错误的详细信息,用户也没办法根据具体的问题来解决,这对 ...