UVA11367 最短路 蓝书练习题

squirrel校园二手交易平台 squirrel校园二手交易平台 (适合寻找SSM项目练手的你。) 项目起源:   期末的课程设计,三人一组,我和两个舍友,一时起兴,决定做一个校园二手交易平台,一开始兴致与激情满满,可是后期时间上的冲突,让我们三个人对于这个项目有点累。   这个项目刚定题两天,BezosLee由于通过了360的网上在线笔试,收到了360公司的免费培训邀请,要去北京的360总部进行培训一周,值得庆... 阅读详情

题意:n个城市,m条无向边,每个城市油价不一样。q次询问,给定起点s,终点e,求问最便宜路径。 油箱一开始设为0,假设每单位距离消耗1L汽油。


分析:dijkstra变形,设d[u][fuel] 表示到达城市u剩余油量为fuel的最小花费代价。这里很多状态是无用的,不需要全部求出来,每次加油一升一升的加。


代码如下:

#include <cstdio>
#include <cstring>
#include <vector>
#include <queue>
using namespace std;

const int INF = 1e9;
const int maxn = 1000+10;
int p[maxn];
int n,m,tot;
struct Edge{
   int from,to,dist;
};
vector<Edge>edges;
vector<int>G[maxn];
int q,s,e,c;

inline void add_edge(int u, int v, int d){
   edges.push_back((Edge){u,v,d});
   tot = edges.size() - 1;
   G[u].push_back(tot);
}

void Read(){
   scanf("%d %d",&n,&m);
   for (int i=0; i<n; i++) scanf("%d",&p[i]);
   for (int i=0; i<=n; i++) G[i].clear();
   edges.clear();
   tot = 0;

   int u,v,d;
   for (int i=1; i<=m; i++) {
        scanf("%d %d %d",&u,&v,&d);
        add_edge(u,v,d);
        add_edge(v,u,d);
   }
}

int d[maxn][100+5];
struct HeapNode{
   int cost,f,u;
   bool operator <(const HeapNode &rhs) const {
       return cost > rhs.cost;
   }
};
priority_queue<HeapNode>que;

int dijkstra(int s,int t, int c){
   memset(d,-1,sizeof(d));
   while (!que.empty()) que.pop();
   que.push((HeapNode){0,0,s});

   HeapNode x,Q;
   Edge e;
   int u,v,tmp;

   while (!que.empty()){
      x = que.top(); que.pop(); u = x.u;
      if (u == t) return x.cost;
      for (int i=0; i<G[u].size(); i++) {
           e = edges[G[u][i]];
           if (e.dist > c) continue;
           if (x.f >= e.dist) {
              tmp = x.f - e.dist;
              if (d[e.to][tmp] == -1 || d[e.to][tmp] > x.cost) {
                   d[e.to][tmp] = x.cost;
                   Q.u = e.to;
                   Q.cost = x.cost;
                   Q.f = tmp;
                   que.push(Q);
              }
           }

           if (x.f < c) {
              if (d[x.u][x.f+1] == -1 || d[x.u][x.f+1]>d[x.u][x.f]+p[u]){
                  d[x.u][x.f+1] = d[x.u][x.f] + p[u];
                  Q.f = x.f+1;
                  Q.u = x.u;
                  Q.cost = x.cost + p[u];
                  que.push(Q);
              }
           }
      }
   }
   return -1;
}

int main(){
    Read();
    scanf("%d",&q);
    while (q--){
       scanf("%d %d %d",&c,&s,&e);
       int ans =  dijkstra(s,e,c);
       if (ans == -1) printf("impossible\n"); else printf("%d\n",ans);
    }
    return 0;
}


潜行游戏设计:核心机制与关卡设计解析 潜行游戏作为动作游戏的重要分支,通过视觉遮蔽、声音传播和AI行为树等复杂系统,为玩家提供独特的策略体验。视觉隐蔽系统采用视野锥和光照值的双重判定,声学传播模型模拟距离衰减和材质穿透,而敌人AI行为树则包含巡逻、警戒和团队协作等状态节点。这些技术不仅提升了游戏的真实感和挑战性,还在《合金装备》《刺客信条》等经典作品中得到广泛应用。潜行游戏的关卡设计强调多路径拓扑结构和环境叙事元素,通过沙漏模型和动态难度调节,平衡自由度和开发成本。未来,基于ML的适应性AI和物理模拟的隐蔽系统将成为创新方向。 阅读详情

相关推荐

ATAC-seq数据分析流程

Outline0. ATAC-seq原理0.1 染色体结构0.2 原理0.3 结果0.4 意义1. ATAC-seq数据分析流程1.1 上游分析(1)序列质控和比对(2)序列筛选1.2 下游分析1.3 进阶分析 0. ATAC-seq原理 0.1 染色体结构 0.2 原理 0.3 结果 0.4 意义 1. ATAC-seq数据分析流程 1.1 上游分析 (1)序列质控和比对 fastqc trim_golare bowtie2 mapping时要加上参数 --very-sensitive -X 2000

weixin_57830892的博客 1万+

UVA11367 加满油 解题报告

【问题描述】     给出n个城市间的m条道路。给出起点A和终点B,以及汽车的邮箱容量c,计算A到B的最便宜路径。假定初始时邮箱为空的。第i个城市的油价为pi。需要回答q组询问。    【输入格式】     第一行为n,m,表示城市数目和道路数目,其中城市编号为1..n。接下来的n行,每行一个整数pi,第i+1行的pi表示第i个城市的油价为pi。再接下来的m+1行,每行表示一

cqyz_holiday的博客 800

zemax双透镜公差分析

蒙特卡罗分析: 评估公差的整体影响,模拟过程中产生一系列随机的lens,满足指定的公差,然后再按照标准评估。公差分析,就是在设计了一个理想的系统后,想看看实际生产过程中如果产生公差(误差),系统会坏到什么程度,也就是光学性能受到多大影响。反灵敏度分析:分别对每个公差在性能方面的一个给定的最小允许减少量来计算公差,也就是限制了系统性能的变化,和灵敏度分析方向相反。灵敏度分析对每个公差单独求值,分别计算每个公差操作数的最大、最小、标准值(如上图)所有设计上可能的公差都列出来了。注意要固定透镜的口径。

fendoudecheng的博客 3207

UVA 11367 Full Tank? (Dijkstra 变种)

题目链接:https://cn.vjudge.net/problem/UVA-11367 #include&lt;bits/stdc++.h&gt; //#include&lt;iostream&gt; //#include&lt;queue&gt; //#include&lt;cstring&gt; //#include&lt;cstdio&gt; using namespace std; ...

满月照亮的路 298

UWB芯片DW3000之PDOA测向实现源码

本文详细介绍如何基于UWB芯片DW3000之PDOA测向的源码实现。

DT程序员的博客 2613

python如何给声音增加回声效果

创建任何声音对象的回声效果。使用sndarray和numpy来创建原始声音的偏移和衰减副本。目前它只是使用硬编码的值来设置回声的数量和延迟。你可以根据自己的需要轻松地重新创建。这段注释说明了make_echo函数的用途和实现方式,即通过pygame的sndarray模块和numpy库来处理声音数据,生成具有回声效果的声音。函数中使用了固定的回声数量和延迟时间,但这些值可以根据用户的需求进行调整。

zhangzhechun的专栏 976

UVA11367 Full Tank?(最短路)

题目链接: UVA 洛谷 题目大意: 有N个城市和M条道路,构成一条无向图。 在每个城市里边都有一个加油站,不同的加油站的价格都不一样。 通过一条道路的油耗就是该道路的边权。 现在你需要回答不超过100个问题,在每个问题中,请计算出一条油箱容量为C的车子,从起点S到终点T至少要花多少钱。 题解: 将每个点 iii 拆成 101101101 个点:V(i,j)V(i,j)V(i,j)表示车子在点 i...

diker 的博客 286

基于MATLAB/Simulink平台进行新能源微电网运行控制的建模与仿真

新能源微电网是现代电力系统的重要组成部分,能够有效整合分布式能源(如光伏、风力发电)和储能设备,实现局部区域内的能源高效利用。微电网的运行控制涉及多源能量管理、负荷平衡以及并网/孤岛模式切换等关键问题。基于MATLAB/Simulink平台进行新能源微电网运行控制的建模与仿真,可以帮助研究者验证控制策略的有效性,并优化系统的动态性能和经济性。本项目旨在构建一个完整的新能源微电网模型,包括电源模块、储能模块、负荷模块以及控制器模块,并通过仿真分析其运行特性。

xiaoheshang_123的博客 420

uva11367 - Full Tank? 最短路 DP

F: Full Tank?  After going through the receipts from your car trip through Europe this summer, you realised that the gas prices varied between the cities you visited. Maybe you could have sav

587

使用CUDA进行按流排序的内存分配的示例程序

在GPU编程中,按流排序的内存分配是一种常见的优化技术,它可以提高内存访问的效率。通过将内存分配与特定的CUDA流相关联,可以确保在GPU上的并发操作期间,内存分配操作与其他GPU计算操作同时进行,从而减少了潜在的内存访问延迟。请注意,上述示例中的代码仅供参考,并可能需要根据实际需求进行修改和调整。此外,为了完整性,我们省略了一些细节,例如主机指针的分配和释放,以及错误处理和错误检查等。在该示例中,我们创建了4个CUDA流,并使用内存池进行内存分配。然后,我们在每个流上执行了相应的内存访问操作,并使用。

Byte_O_O的博客 281

ENVI_基于无人机数据的果树提取与相对健康监测

一、数据处理 1.计算植被指数VDVI或GDVI:Band Math / Spectral Indices 2.制作掩膜:ROI——Threshold——Subset 二、单地块果树提取 1.绘制感兴趣区shp 2.确定果树提取参数:Count Crops 3.输出果树矢量文件:Convert Crops To Shapefile 4.果树相对健康程度分析:Calculate Crop Me...

提供技术服务、资源分享 429690771 1398

UVA 11367 Full Tank?(bfs最短路)

n个点m条无向边的图,油箱有上限,每个单位的汽油能走1单位距离,每个城市的油价val[i], 对于每个query,求s到e的最小花费。 dp[i][j]表示到达第i个城市,油箱剩余油量j时的最小花费。用bfs扩充节点,每个点拆成100个节点,时间复杂度还是可以接受的。 #include #include #include #include #include #include #include

diary_yang的专栏 1541

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

uva 11367 - Full Tank?(最短路)

题目链接:uva 11367 - Full Tank? 增加一维表示油量,每个状态可以考虑向下一个节点移动,也可以选择加一单位油。 #include #include #include #include #include using namespace std; typedef pair pii; const int maxn = 1005; const int m

不慌不忙、不急不躁 1207

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

UVA 11367 - Full Tank?(最短路+DP)

UVA 11367 - Full Tank? 题目链接 题意:给定一个无向图,每个点有一个加油站,有一个油价,现在一辆车,每次询问要从起点s走到t,邮箱容量为c,问最小代价 思路:dijkstra算法,d数组多一个状态,表示当前油量即可 不过这题如果每次都把所有状态转移完,挺费时间的,卡着时间过的 后面改成每次1升1升加油去转移状态,效率会比较快,因为有很多无用状态可以省

Remilia's 1918

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

UVA - 11367 Full Tank? (二维最短路 好题)

题目链接:https://vjudge.net/problem/UVA-11367 思路:多加了一个状态表示在这个点的油量,在一个点既可以加油,一单位一单位的加,也可以向其他点扩展 #include &lt;bits/stdc++.h&gt; using namespace std; const int MAXN = 2050; const int MAXM = 20050; const i...

GYH0730的博客 314

Full Tank? UVA - 11367

Full Tank? UVA - 11367图论·最短路题目大意:n个点m条无向边的图,每个单位的汽油能走1单位距离,每个城市的油价p[i],油箱有上限c, 对于每个询问,求s到t的最小花费。题解:d[u][oilu]在d这个点剩余油量为oilu的最小花费。 只要油还够,就可以向与它相连的v转移,d[v][oilu-w(u,v)] 注意如果直接枚举加多少油会T。 因此每次只加一格油,也就是只+

FTM's Blog 306

uva 11367 最短路

F: Full Tank? After going through the receipts from your car trip through Europe this summer, you realised that the gas prices varied between the cities you visited. Maybe you c...

weixin_30779691的博客 148

UVA 10269 Adventure of Super Mario 最短路

题意:有A个村庄和B个城堡,1~A为村庄,A+1~A+B为城堡,马里奥在A+B,他要到1,图为无向图,马里奥可以用走的,也可以用加速鞋,加速鞋可以让马里奥瞬间移动不超过L,但是他不可以穿越城堡,也就是说如果他加速,那么遇到城堡就要停下来,加速的起点和终点必须是城堡或者村庄。问你从起点到终点的最少时间花费。          思路:这道题有点像uva 不过那道题我没写题解- - 这种题虽然是最短路

s_h_r 842

uva 11367 最短路问题 边之间还有其他关系

#include #include #include #include #define INF 0x3f3f3f3f using namespace std; struct node1{ int to,next,w; }e[100010]; struct node{ int a,c,w; bool operator >(const node &x) const { return w>x

sky_zdk的博客 339

题解 [UVA11367]Full Tank?

dijkstra

im_zyINF的博客 197

Uva 11367 Full Tank?(多状态最短路)

题意:有n个城市m条无向路连接,第i个城市的油价格为pi, 给出q个询问,每个询问包含起点s和终点t,还有油箱容量c,问从s到t最便宜的路径 思路:设d[i][j]:到达第i个城市还剩j升油时,所需要的最少花费,那么这里可以按花费直接用dijkstra,只是多加了一个状态而已 #include #include #include #include #include const

hnust_Derker的博客 516

UVA11367 Full Tank?

题面传送门 二维djdjdj 考虑设di,jd_{i,j}di,j​为到达iii点,还有jjj升油的最小花费。 那么可以拓展出两种状态,即加111升油或前往下一个城市。 代码实现: #include<cstdio> #include<cstring> #include<queue> using namespace std; int n,m,k,x,y,z,d[1039][139],w[1039],cur; struct yyy{int to,w,z;}tmp; struc

fxt275307894a的博客 226

UVA 11367 - Full Tank

/* 最短路问题  可以分解为2种走法  1:原地加一单位油,2:到下一个地点。 */ #include #include #include #include #define M 10010 using namespace std; struct Edge {     int from,to,dist;     Edge(int x,int y,int z)

chenchaoflight的专栏 935

UVA11367 Full Tank? 【分层图最短路】

题目 After going through the receipts from your car trip through Europe this summer, you realised that the gas prices varied between the cities you visited. Maybe you could have saved some money if you ...

weixin_30405421的博客 141

(beginer)最短路 UVA 11367 Full Tank?

F: Full Tank?  After going through the receipts from your car trip through Europe this summer, you realised that the gas prices varied between the cities you visited. Maybe you could have saved som

We Can 712

uva 11367 - Full Tank?(dijkstra TLE)

TLE 啊 TLE,我的想法和讨论版里的是一样的,为什么就是一直TLE呢。是每次查询都重做一遍dijkstra导致的吗?怎么还有人也那样却ac了呢。求大神解释啊。 代码啊,恶心的代码啊 #include #include #include #include #include //#include using namespace std; const int max

勿忘初衷 1253
上一篇: UVA10269 最短路
下一篇: SPOJ3890 莫比乌斯
罗侯
博客等级 码龄10年 135粉丝 258原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值