news 2026/6/26 0:13:33

UVa 590 Always on the Run

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
UVa 590 Always on the Run

题目描述

题目要求规划一条kkk天的旅行路线,每天从当前城市飞往另一个城市,第kkk天结束时必须在城市nnn(亚特兰大)。每个航班的价格按周期变化(周期长度ddd1≤d≤301 \le d \le 301d30),价格为000表示当天无航班。求最小总花费,若无解输出No flight possible.

输入格式

输入包含多个场景。每个场景第一行两个整数nnn2≤n≤102 \le n \le 102n10)和kkk1≤k≤10001 \le k \le 10001k1000)。接下来n(n−1)n(n-1)n(n1)行,每行描述一对城市之间的航班价格。第111n−1n-1n1行是从城市1112,3,…,n2,3,\ldots,n2,3,,n的航班;第nnn2n−22n-22n2行是从城市2221,3,4,…,n1,3,4,\ldots,n1,3,4,,n,以此类推。每个航班描述以整数ddd开头,后跟ddd个整数表示每天的价格。输入以n=k=0n = k = 0n=k=0结束。

输出格式

对于每个场景,输出Scenario #X,然后输出The best flight costs x.No flight possible.,每个场景后跟一个空行。

样例

输入

3 6 2 130 150 3 75 0 80 7 120 110 0 100 110 120 0 4 60 70 60 50 3 0 135 140 2 70 80 2 3 2 0 70 1 80 0 0

输出

Scenario #1 The best flight costs 460. Scenario #2 No flight possible.

题目分析

本题的核心是动态规划。

动态规划定义

cost[d][c]\textit{cost}[d][c]cost[d][c]表示第ddd天到达城市ccc的最小花费。初始cost[1][c]=\textit{cost}[1][c] =cost[1][c]=航班价格(若存在)。转移:
cost[d][c]=min⁡p≠c{cost[d−1][p]+price(p→c,d)} \textit{cost}[d][c] = \min_{p \ne c} \{ \textit{cost}[d-1][p] + \text{price}(p \to c, d) \}cost[d][c]=p=cmin{cost[d1][p]+price(pc,d)}
其中price(p→c,d)\textit{price}(p \to c, d)price(pc,d)为第ddd天从pppccc的航班价格(若为000则不可用)。

复杂度分析

k≤1000k \le 1000k1000n≤10n \le 10n10,时间复杂度O(k×n2)O(k \times n^2)O(k×n2)

代码实现

// Always on the Run// UVa ID: 590// Verdict: Accepted// Submission Date: 2016-09-26// UVa Run Time: 0.000s//// 版权所有(C)2016,邱秋。metaphysis # yeah dot net#include<bits/stdc++.h>usingnamespacestd;intmain(){cin.tie(0);cout.tie(0);ios::sync_with_stdio(false);vector<vector<int>>schedule[12];intcost[1100][12];intn,k,cases=0;while(cin>>n>>k,n){for(inti=1;i<=n;i++)schedule[i].clear();inttotal=n*(n-1),count;for(inti=1;i<=n;i++){schedule[i].push_back(vector<int>(1,0));for(intj=1;j<=n;j++){if(i==j){schedule[i].push_back(vector<int>(1,0));continue;}cin>>count;vector<int>lines(count);for(intl=0;l<count;l++)cin>>lines[l];schedule[i].push_back(lines);}}memset(cost,0,sizeof(cost));for(inti=1;i<=n;i++)cost[1][i]=schedule[1][i][0];for(inti=2;i<=k;i++){for(intj=1;j<=n;j++){for(intl=1;l<=n;l++){if(l==j)continue;intfee=schedule[j][l][(i-1)%schedule[j][l].size()];if(fee==0||cost[i-1][j]==0)continue;if(cost[i][l]==0)cost[i][l]=cost[i-1][j]+fee;elsecost[i][l]=min(cost[i][l],cost[i-1][j]+fee);}}}cout<<"Scenario #"<<++cases<<'\n';if(cost[k][n]>0)cout<<"The best flight costs "<<cost[k][n]<<".\n\n";elsecout<<"No flight possible.\n\n";}return0;}
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/26 0:13:17

2分钟搞懂:AI、大模型、智能体,到底是什么关系?

你是不是也常被“AI”“大模型”“智能体”这些词刷屏&#xff0c;却又傻傻分不清楚&#xff1f;今天咱们花两分钟&#xff0c;一口气把它们的“辈分”理顺。 AI&#xff1a;一个宏大的梦想 人工智能&#xff08;AI&#xff09;是个大箩筐&#xff0c;目标是让机器像人一样看、…

作者头像 李华
网站建设 2026/6/26 0:10:10

CVE-2025-12916漏洞分析:深信服运维系统源码泄露与防御实战

1. 项目概述&#xff1a;一次针对深信服运维安全管理系统的漏洞分析与复现最近在安全研究圈里&#xff0c;深信服的产品线又成了大家讨论的热点。这次不是VPN&#xff0c;也不是防火墙&#xff0c;而是他们面向企业IT运维场景的“运维安全管理系统”。一个编号为CVE-2025-12916…

作者头像 李华
网站建设 2026/6/25 23:58:05

OBS多平台直播插件终极指南:一键同步推流到YouTube、Twitch、Bilibili

OBS多平台直播插件终极指南&#xff1a;一键同步推流到YouTube、Twitch、Bilibili 【免费下载链接】obs-multi-rtmp OBS複数サイト同時配信プラグイン 项目地址: https://gitcode.com/gh_mirrors/ob/obs-multi-rtmp 你是否在为多平台直播而烦恼&#xff1f;需要为每个平…

作者头像 李华
网站建设 2026/6/25 23:49:36

运维开发宝典042-Python自动化运维实战6

大家好&#xff0c;我是云计算磊哥&#xff0c;从业20年的IT老鸟。IT架构师培训15年&#xff0c;总结了一套从入门到精通的全运维开发宝典手册。准备用300天时间写一套博文&#xff0c;手把手从安装软件讲起&#xff0c;从linux系统管理&#xff0c;shell脚本编程&#xff0c;m…

作者头像 李华
网站建设 2026/6/25 23:47:17

无监督聚类实战:从数据混沌到业务可执行分群

1. 项目概述&#xff1a;这不是在给数据“贴标签”&#xff0c;而是在帮业务大脑重新长出神经突触“From Chaos to Order: Harnessing Data Clustering for Enhanced Decision-Making”——这个标题里藏着一个被太多人轻描淡写、却天天在拖垮决策效率的真相&#xff1a;我们手里…

作者头像 李华