尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

UVa 590 Always on the Run

UVa 590 Always on the Run
📅 发布时间:2026/6/26 0:18:00

题目描述

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

输入格式

输入包含多个场景。每个场景第一行两个整数nnn(2≤n≤102 \le n \le 102≤n≤10)和kkk(1≤k≤10001 \le k \le 10001≤k≤1000)。接下来n(n−1)n(n-1)n(n−1)行,每行描述一对城市之间的航班价格。第111到n−1n-1n−1行是从城市111到2,3,…,n2,3,\ldots,n2,3,…,n的航班;第nnn到2n−22n-22n−2行是从城市222到1,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[d−1][p]+price(p→c,d)}
其中price(p→c,d)\textit{price}(p \to c, d)price(p→c,d)为第ddd天从ppp到ccc的航班价格(若为000则不可用)。

复杂度分析

k≤1000k \le 1000k≤1000,n≤10n \le 10n≤10,时间复杂度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;}

相关新闻

  • 视觉指令调优实战:让多模态模型真正看懂‘把左上角按钮换成蓝色’
  • 短视频 游戏 直播 联机一切 只要有用户 有用户用 带货才好卖
  • 042、多态与鸭子类型:Python 的接口哲学与 Protocol 类型检查

最新新闻

  • MonetaMarkets的账户协同感够不够清楚?
  • 1.全面理解Mysql架构
  • 神经算子与GRU-STONe在航空辐射监测中的应用
  • 2026企业协作网盘推荐:5款企业文档协作平台对比与选型指南
  • STM32WB55入门教程(二)
  • 简道云智能助手实测:工单派发→报工→质检→入库,全自动流转到底靠不靠谱?

日新闻

  • Qwen2.5-Turbo百万上下文实战指南:百炼平台长文本处理全解析
  • 怎么监控对标账号更新,2026年作者监控工作流,5款深度对比
  • EdgeRemover:专业级Windows Edge浏览器管理工具,彻底解决顽固软件卸载难题

周新闻

  • Visual C++运行库修复终极指南:5分钟快速解决Windows软件启动错误
  • 手把手教你构建统计局地区经济数据爬虫:从环境搭建到数据持久化全指南
  • 2026多Agent深度解析:用AI团队替代单一模型,四种架构实战落地

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号