当前位置: 首页 > news >正文

如何评价网站是否做的好flask做的网站如何上传文件

如何评价网站是否做的好,flask做的网站如何上传文件,专业产品画册设计公司,响应式网站和UVA1048/LA3561 Low Cost Air Travel 题目链接题意输入格式输出格式 分析AC 代码 题目链接 本题是2006年ICPC世界总决赛的A题 题意 很多航空公司都会出售一种联票,要求从头坐,上飞机时上缴机票,可以在中途任何一站下飞机。比如,假…

UVA1048/LA3561 Low Cost Air Travel

  • 题目链接
  • 题意
      • 输入格式
      • 输出格式
  • 分析
  • AC 代码

题目链接

   本题是2006年ICPC世界总决赛的A题

题意

   很多航空公司都会出售一种联票,要求从头坐,上飞机时上缴机票,可以在中途任何一站下飞机。比如,假设你有一张“城市1->城市2->城市3”的联票,你不能用来只从城市2飞到城市3(因为必须从头坐),也不能先从城市1飞到城市2再用其他票飞到其他城市玩,回到城市2后再用原来的机票飞到城市3(因为机票已经上缴)。
   这里有一个例子。假设有3种票,每种票的情况如下所示:
    ∙ \bullet 票1:城市1->城市3->城市4,票价225美元
    ∙ \bullet 票2:城市1->城市2,票价200美元
    ∙ \bullet 票3:城市2->城市3,票价50美元
   你想从城市1飞到城市3,有两种方法可以选择。买票1,只飞第一段;买票2和3,通过城市2中转。显然,第一种方法比较省钱,虽然浪费了一段。
   给出票的信息,以及一个或多个行程单,你的任务是买尽量少的票(同一种票可以买多张),使得总花费最小。输入保证行程总是可行的。行程单上的城市必须按顺序到达,但中间可以经过一些辅助城市。

输入格式

   输入包含多组数据。每组数据第一行为一个整数NT,即联票的种类数。以下NT行每行为一个联票描述,其中第一个整数为票的价格,然后是联票上城市的数目以及这些城市的整数编号(按顺序给出)。接下来为一个整数NI,即需要计算最小花费的行程单数目。以下NI行每行为一个行程单,其中一个整数为行程单上的城市数目(包括起始城市),以及这些城市的编号(按顺序给出,每个城市编号可取任意整数但唯一)。输入保证每组数据最多包含20种联票和20个行程单,每张票或者行程单上有至少2个,最多10个城市。票价不超过$10000。联票或者行程单上的相邻城市保证不同。票和行程单都从1开始编号。输入结束标志为NT=0。

输出格式

   对于每组数据的每张行程单,输出最小花费和对应的方案(按顺序,详见样例输出)。输出保证唯一。

分析

   题目交代每个城市的编号是任意整数但唯一,因此需要对城市重新编号(不同城市最多200个)。行程单上的城市必须按顺序到达,但中间可以经过一些辅助城市,这里其实隐含了一点:只能从行程单的首个城市作为初始出发点。
   充分理解题意之后,可以知道本题其实是单源最短路问题,可以用spfa处理,只不过需要重新定义状态点:d[i][j]表是当前旅行到了城市i,已经走完行程单前j个城市的最小花费。
   可以用结构体struct {int v, k, t;} ans[N][M]记录最短路径:ans[i][j]记录当前旅行到了城市i,已经走完行程单前j个城市花费最小时,上个行程旅行到了城市v,已经走完行程单前k个城市,对应转机的机票t。

AC 代码

#include <iostream>
#include <cstring>
#include <queue>
using namespace std;#define T 21
#define M 11
#define N 202
int d[N][M], f[N][M], a[T][M], w[T], c[T], b[M], id[N], m, n, t, x, kase = 0;
struct node {int v, k;} p; struct {int v, k, i;} ans[N][M];int find(int v) {for (int i=0; i<x; ++i) if (id[i] == v) return i;id[x] = v;return x++;
}int bfs() {cin >> m;for (int i=0, v; i<m; ++i) cin >> v, b[i] = find(v);memset(d, 1, sizeof(d)); memset(f, 0, sizeof(f)); queue<node> q;for (int i=1; i<=t; ++i) if (a[i][0] == b[0]) for (int j=1, k=1, v; j<c[i] && k<m; ++j) {if ((v = a[i][j]) == b[k]) ++k;if (w[i] < d[v][k]) {d[v][k] = w[i]; ans[v][k] = {0, 0, i};if (k<m && !f[v][k]) q.push({v, k}), f[v][k] = 1;}}while (!q.empty()) {p = q.front(); q.pop();int v0 = p.v, k0 = p.k, g = d[v0][k0]; f[v0][k0] = 0;for (int i=1; i<=t; ++i) if (a[i][0] == v0) for (int j=1, k=k0, v; j<c[i] && k<m; ++j) {if ((v = a[i][j]) == b[k]) ++k;if (g + w[i] < d[v][k]) {d[v][k] = g + w[i]; ans[v][k] = {v0, k0, i};if (k<m && !f[v][k]) q.push({v, k}), f[v][k] = 1;}}}return d[b[m-1]][m];
}void path(int v, int k) {if (ans[v][k].k) path(ans[v][k].v, ans[v][k].k);cout << ' ' << ans[v][k].i;
}void solve() {x = 0;for (int i=1; i<=t; ++i) {cin >> w[i] >> c[i];for (int j=0, v; j<c[i]; ++j) cin >> v, a[i][j] = find(v);}cin >> n; ++kase;for (int i=1; i<=n; ++i) {cout << "Case " << kase << ", Trip " << i << ": Cost = " << bfs() << endl << "  Tickets used:";path(b[m-1], m); cout << endl;}
}int main() {while (cin >> t && t) solve();return 0;
}
http://www.15wanjia.com/news/185209.html

相关文章:

  • 手机摄影网站首页提升seo搜索排名
  • 公司为什么要建立网站代做土木毕业设计网站
  • 个人网站用什么软件定制app开发的流程
  • 一家专门做衣服的网站58同城网招聘找工作官网
  • 中小企业电商网站建设的重要性可拖拽网站
  • 金山石化网站建设北京网站建设z亿玛酷1订制
  • 网站备案密码重置申请表网站转跳怎么做
  • 网站 设计 文档国际军事最新军事新闻
  • 微信网页制作网站app定制开发 价格
  • 惠州网站排名提升苏州互联网公司集中在哪里
  • 吴志祥最早做的网站是什么网站网站建设 教材 推荐
  • 网站建设套定额深圳龙华区有什么好玩的地方
  • 主流网站建设同一ip 网站 权重
  • 如何用网站赚钱滴滴出行app开发公司
  • 名站在线网站建设 美词原创
  • 门户网站功能动感技术网站建设
  • 电子产品外包加工项目长春seo代理计费
  • 企业 手机门户网站安溪住房和城乡规划建设局网站
  • 做网站优化步骤网站开发总监待遇
  • 个人网站开发的意义苏州开设网站公司在什么地方
  • 个人网站趋向手机百度搜索app
  • 营销型企业网站源码汕头网站建设科技有限公司
  • 邯郸网站设计在哪里做英文兼职的网站
  • 佛山市手机网站建设低价网站建设联系方式
  • 卖高权重网站做跳转做网站可以干嘛
  • 买源码的网站优秀企业官网设计案例
  • 网站广告位投放广西城乡住房建设部网站
  • 怎么设置网站关键词杭州网站建设公司联系方式
  • 广西优化网站 优帮云英德市建设及城乡管理局网站
  • 网页转向网站网站模板怎么弄