【u031】租用游艇
来源:互联网 发布:微信自媒体 知乎 编辑:程序博客网 时间:2024/05/17 09:20
Time Limit: 1 second
Memory Limit: 128 MB
【问题描述】
长江游艇俱乐部在长江上设置了n 个游艇出租站1,2,…,n。游客可在这些游艇出租站租用游艇,并在下游的任何一个游艇出租站归还游艇。游艇出租站i 到游艇出租站j 之间的租金为r(i,j),1<=i<=j<=n。试设计一个算法,计算出从游艇出租站1 到游艇出租站n 所需的最少租金。 对于给定的游艇出租站i 到游艇出租站j 之间的租金为r(i,j),1<=i<j<=n,编程计算从游艇出租站1 到游艇出租站n所需的最少租金。="" 保证计算过程中任何时刻数值都不超过106="" <="" p="" style="font-family: Simsun; font-size: medium;">【输入格式】
由文件提供输入数据。文件的第1 行中有1 个正整数n(n<=200),表示有n个游艇出租站。接下来的n-1 行是一个半矩阵r(i,j),1<=i<j<=n。 <="" p="">【输出格式】
程序运行结束时,将计算出的从游艇出租站1 到游艇出租站n所需的最少租金输出到文件中。
【数据规模】
对于100%数据,0<=所有点的横、纵坐标<=100
Sample Input1
35 157
Sample Output1
12
【题解】
这是一道最短路问题。
这里的半矩阵实际上是描述了第i个站到第i+1..n个站的距离。
(因为只能从上游到下游.)
则处理出起始的时候两点之间的距离。其他没有变的距离设为无穷大(21亿/3);
然后用floyd算法就能解决问题了。
最后输出f[1][n];
ps:floyd依赖症。。。
【代码】
#include <cstdio>#include <cstring>int n, w[300][300];int main(){//freopen("F:\\rush.txt", "r", stdin);//freopen("F:\\rush_out.txt", "w", stdout);memset(w, 127 / 3, sizeof(w)); //一开始任意两点之间的距离为正无穷..scanf("%d", &n);for (int i = 1; i <= n - 1; i++) //输入半矩阵{for (int j = i + 1; j <= n; j++){int x;scanf("%d", &x);w[i][j] = x;//读入i到j的距离。}}for (int k = 1; k <= n; k++)//用floyd算法计算出任意两点之间的距离。for (int i = 1; i <= n; i++)for (int j = 1; j <= n; j++)if (w[i][j] > w[i][k] + w[k][j])w[i][j] = w[i][k] + w[k][j];printf("%d", w[1][n]);//最后输出1到n的距离即可。return 0;}
0 0
- 【u031】租用游艇
- 游艇租用
- 租用游艇
- 【dp】租用游艇问题
- 王晓东 租用游艇问题
- 租用游艇问题
- 租用游艇问题
- 租用游艇问题
- 租用游艇问题
- 游艇租用问题
- 租用游艇问题
- 租用游艇问题
- openjudge 租用游艇问题
- 游艇租用问题2
- [洛谷1359] 租用游艇
- 租用游艇问题
- 租用游艇问题
- 算法 租用游艇问题
- 大数据聚类学习整理
- 05-高斯分布
- Archlinux 安装过程(UEFI+GRUB+GNOME)
- SQL简单函数
- Java反射初探
- 【u031】租用游艇
- Nginx虚拟主机及相关设置
- xutils 使用规则以及所实现的功能
- http 响应头里content-length 的几种情况
- PyMongo使用入门(一)
- C语言判断两个浮点数是否相等
- 泛型以及泛型的擦除
- ls指令
- VS 2010 创建新项目 解决方案失败