UVa 1347 Tour

2023-11-20

题目:Tour

 

题意:

来自luogu——

John Doe想用最小的路程游览完所有目的地。每个目的地都用坐标xi,yi表示。任何两目的地的xi都不相同。两目的地之间的路程是两点之间的直线距离。John是这样走的:他从最左边的点开始,然后只能向右走,走到最右边的点,然后他只能向左走,回到最开始的点。每个点都要走到,并且除了出发点以外每个点只能经过一次。

请写出一个程序求符合要求的最小路程。

 

思路:

可以把从左走到右再走回来看做从最左通过两条路径走到最右的最小路程。

令f[i][j]表示第一条路走到了i,第二条路走到了j,i<j,且1~j全部走完的最小路程。

由于不可以走回头路,所以下一步第一条路或第二条路中一定有一条走到了i+1。

状态转移方程 f[i][j]=min(g[i][i+1]+f[i+1][j],g[j][i+1]+f[i+1][i]) ,g表示两点之间距离。

边界f[n-1][j]=gn-1][n]+g[j][n],g[1][2]+f[2][1]就是最终解。

 

 

代码:

#include<bits/stdc++.h>
using namespace std;

#define maxn 50
#define db double
#define inf (1<<30)

int n;
db a[maxn+5]= {0},b[maxn+5]={0};
db g[maxn+5][maxn+5];
db f[maxn+5][maxn+5];

void readin() {
	for(int i=1; i<=n; i++) {
		scanf("%lf%lf",&a[i],&b[i]);
	}
}

void make_g() {
	memset(g,0,sizeof(g));
	for(int i=1; i<=n; i++) {
		for(int j=1; j<i; j++) {
			g[i][j]=g[j][i]=sqrt((a[i]-a[j])*(a[i]-a[j])+(b[i]-b[j])*(b[i]-b[j]));
		}
	}
}

db dp() {
	memset(f,0,sizeof(f));
	for(int i=n-1;i>=2;i--){
		for(int j=1;j<i;j++){
			if(i==n-1) f[i][j]=g[i][n]+g[j][n];
			else f[i][j]=min(g[i][i+1]+f[i+1][j],g[j][i+1]+f[i+1][i]);
		}
	}
	return g[1][2]+f[2][1];
}

int main() {
	while(~scanf("%d",&n)) {
		readin();
		make_g();
		db ans=dp();
		printf("%.2lf\n",ans);
	}
	return 0;
}

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

UVa 1347 Tour 的相关文章

  • 入门级动态规划:2018年第九届蓝桥杯省赛B组第四题—测试次数( 摔手机 )

    目录 下面列出用动态规划如何解决此问题 计算若干层楼用若干部手机最少需要摔多少次 计算用若干部手机摔若干次最多可以确定多少层楼 原题描述 x星球的居民脾气不太好 但好在他们生气的时候唯一的异常举动是 摔手机 各大厂商也就纷纷推出各种耐摔型手
  • 蓝桥杯--砝码称重(dp)

    砝码称重 题目评测 你有一架天平和 N 个砝码 这 N 个砝码重量依次是 W1 W2 WN 请你计算一共可以称出多少种不同的正整数重量 注意砝码可以放在天平两边 输入格式 输入的第一行包含一个整数 N 第二行包含 N 个整数 W1 W2 W
  • hdu 1058 Humble Numbers

    Problem acm hdu edu cn showproblem php pid 1058 题意 找出从小到大第 n 个因子 除了 1 和本身 只有 2 3 5 7 的数 即第 n 个 num 2 a 3 b 5 c 7 d 的数 据说
  • 动态规划问题——最长上升子序列(LIS)(二)

    原文转载自我的博客benym cn 推荐链接 动态规划问题 最长上升子序列 LIS 一 动态规划问题 最长上升子序列 LIS 三 题目描述 一天 小凯同学震惊的发现 自己无内的PM2 5指标是有规律的 小凯采样了PM2 5数值 发现PM2
  • hdu 1024 Max Sum Plus Plus

    Problem acm hdu edu cn showproblem php pid 1024 题意 给一个长为 n 的序列 有从中挑 m 个相互不重合的子序列求总和 让总和最大 分析 没能看懂百度的前几份题解 好像都跟 kuangbin
  • codeforces Gym 101341 K Competitions

    Problem codeforces com gym 101341 problem K vjudge net contest 162325 problem K Meaning 有 n 场比赛 每一场有 开始时间 a 结束时间 b 价值 c
  • UVA-127 纸牌游戏 题解答案代码 算法竞赛入门经典第二版

    GitHub jzplp aoapc UVA Answer 算法竞赛入门经典 例题和习题答案 刘汝佳 第二版 简单的模拟题目 暴力即可 我使用了栈记录每个堆的数量 include
  • uva 1601 The Morning after Halloween code2

    题目 The Morning after Halloween 题意 有n个用小写字母表示的鬼和一张地图 每个鬼都要移动到对应的大写字母 两个鬼的位置不能在一次移动中交换 问最少步数 思路 双向bfs 此题还可以单向bfs 见code1 1
  • leetcode买卖股票的最佳时机含手续费

    动态规划简单题 我们设置二维数组dp size 2 其中dp i 0 代表第i 天不持有股票的最大价值 其中dp i 1 代表第i天持有股票的最大价值 当天持有股票可以从前一天持有股票和前一天不持有股票现今买入转换得来 当天不持有股票可以从
  • [leetcode] 鸡蛋掉落 Google面试题 dp

    题目链接 给你 k 枚相同的鸡蛋 并可以使用一栋从第 1 层到第 n 层共有 n 层楼的建筑 已知存在楼层 f 满足 0 lt f lt n 任何从 高于 f 的楼层落下的鸡蛋都会碎 从 f 楼层或比它低的楼层落下的鸡蛋都不会破 每次操作
  • [Codeforces 1579G] Minimal Coverage

    You are given n lengths of segments that need to be placed on an infinite axis with coordinates The first segment is pla
  • Uva 10474 Where is the Marble?(排序与检索)

    本题若掌握了sort 和lower bound 两个函数 就无难点 include
  • P1020 [NOIP1999 普及组] 导弹拦截

    题目 题目链接 题解 看了网上好多讲解的博客 都好屑啊 就当已知第一问求解最长不上升子序列长度 第二问求解最长上升子序列长度 如果想知道证明 可以自行百度Dilworth定理 或者参考这个博客 未优化 O n2 未优化的比较基础 第一问 状
  • 牛客网-网易2018笔试第7题 -合唱(DP问题)

    题目描述 小Q和牛博士合唱一首歌曲 这首歌曲由n个音调组成 每个音调由一个正整数表示 对于每个音调要么由小Q演唱要么由牛博士演唱 对于一系列音调演唱的难度等于所有相邻音调变化幅度之和 例如一个音调序列是8 8 13 12 那么它的难度等于
  • 动态规划之完全背包问题

    完全背包问题 题目 有 N N N 种物品和一个容量为 V V V 的背包 每种物品都有无限件可用 放入第 i
  • GYM 102059 G Fascination Street

    G Fascination Street 参考 给出一串n 2e5 个灯 每个灯点亮可以照到相邻三个位置 每个灯点亮都有不同的花费 现在可以交换k 9 次灯的位置 求把所有n个位置都照到的最小花费 交换的肯定是一个亮的灯和一个灭的灯 不然是
  • Queen on Grid_dp

    思想很单纯 gt dp Code 代码解释 dp i j ans 1 i 1 j 竖着过来 dp i j mod dp i j ans 2 i j 1 横着过来 dp i j mod dp i j ans 3 i 1 j 1 斜着过来 dp
  • 2021年蓝桥杯A组省赛-左children右sibling

    CXXX有毛病 左孩子右兄弟 字眼很敏感吗 题目 题目链接 题解 贪心 DFS 以 u u u 为根的子树选择包含节点最多的以 v v v 为根的子树作为最后连接的右兄弟能保证树向下延展的最多 所以重点转换为了计算以
  • [HDU 5079][2014 Asia AnShan Regional Contest]Square(DP套DP)

    题目链接 http acm hdu edu cn showproblem php pid 5079 题目大意 给你一个 n n n 8 n middot n n le 8 的棋盘 上面有一些格子必须是黑色 其它可以染黑或者染白 对于一个棋盘
  • 【DP】拔河比赛

    题目 一个学校举行拔河比赛 所有的人被分成了两组 每个人必须 且只能够 在其中的一组 要求两个组的人数相差不能超过1 且两个组内的所有人体重加起来尽可能地接近 输入 输入数据的第1行是一个n 表示参加拔河比赛的总人数 n lt 100 接下

随机推荐

  • 计算机不能创建用户,Windows10系统无法创建新用户该怎么办?

    由于工作需要 需要对同一台计算机创建多个用户帐户 Windows7操作系统创建新用户的方法很简单 简单几步就能够轻松完成创建 参照Windows7操作系统创建新用户的步骤 发现并不适用于Windows10操作系统 系统会提示需要登录Micr
  • CocosCreator波浪Shader

    waveEffect effect Copyright c 2017 2020 Xiamen Yaji Software Co Ltd CCEffect techniques passes vert sprite vs vert frag
  • Serverless 的前世今生

    作者 阿里云用户组 从云计算到 Serverless 架构 大家好 我是阿里云 Serverless 产品经理刘宇 很高兴可以和大家一起探索 Serverless 架构的前世今生 从云计算到云原生再到 Serverless 架构 技术飞速发
  • 【推荐算法】双塔模型代码(tensorflow)

    推荐算法 双塔模型介绍 MachineCYL的博客 CSDN博客 上文介绍了双塔模型的原理和结构 这篇介绍一下双塔模型的代码实现 我使用的是tensorflow来实现双塔模型和模型训练 一 前期准备 tensorflow使用的版本是2 0
  • 正激拓扑的复位电路

    正激拓扑的复位电路 1 杂谈 2 原理简介 3 分类 3 1 有源钳位 3 2 绕组复位 3 3 RCD复位 3 4 谐振复位 1 杂谈 我发现我有个最大的缺点是不会讲话 每次跟不熟悉的人讲话或者汇报时 就毫无逻辑 紧张的要死 被讨厌的勇气
  • Navicat设置id自增,并随时设置自增的起始值

    一 问题背景 有时候数据里面的表的id为 1 4 13 15等等 如下图 怎么重新设置自增的起始值 使它变成每个增加1 而不是散列的数 如下效果 二 解决方法 选中要修改的表 点击设计表 如下 然后点击 选项 在自动递增那里改为1即可 点击
  • 2022全国职业技能大赛-网络安全赛题解析总结④(超详细)

    2022全国职业技能大赛 网络安全赛题解析总结 自己得思路 模块A 基础设施设置与安全加固 20分 模块B 网络安全事件响应 数字取证调查和应用安全 40分 模块C CTF夺旗 攻击 20分 模块D CTF夺旗 防御 20分 有什么不懂得可
  • MATLAB实现PSO-SVM多输入单输出回归预测(粒子群算法优化支持向量机)

    作者简介 热爱科研的Matlab仿真开发者 修心和技术同步精进 matlab项目合作可私信 个人主页 Matlab科研工作室 个人信条 格物致知 更多Matlab仿真内容点击 智能优化算法 神经网络预测 雷达通信 无线传感器 电力系统 信号
  • 循环 for while do..while 以及break和continue

    循环 for 双重for while dowhile continue break 一 for循环 被循环的执行语句为循环体 是否继续执行取决于终止条件语句 所以 循环语句由 循环体和循环的终止条件组成的语句 语句结构 for 初始化变量
  • 桌面怎么设置 计算机 网络连接,电脑桌面的本地连接ip地址可以设置吗_本地连接ip地址设置方法 - 驱动管家...

    1 首先在Win7桌面上找到 网络 入口 如下图 进入Win7网络 2 进入网络之后我们再点击顶部的 网络共享中心 如下图 进入Win7网络共享中心 3 进入Win7网络共享中心之后 我们再点击左侧的 更改网络适配器 如下图 选择更改网络适
  • 经典,一文讲透ESD原理和设计

    一直想给大家讲讲ESD的理论 很经典 但是由于理论性太强 任何理论都是一环套一环的 如果你不会画鸡蛋 注定了你就不会画大卫 先来谈静电放电 ESD Electrostatic Discharge 是什么 这应该是造成所有电子元器件或集成电路
  • Ubuntu20.04通过rsync和inotify实现定时备份与实时备份

    通过rsync和inotify实现定时备份与实时备份 为了避免主服务单点故障 可以将数据备份到远程备份机器 可以使用rsync工具同步Jenkins home到远程 可以利用rsync工具的 exclude from FILE 功能 定制一
  • KVM热迁移

    KVM热迁移 介绍 KVM热迁移的前提是拥有共享存储 以下通过NFS实现KVM热迁移 迁移过程 将一处于运行状态的KVM虚拟机从节点kvm 01迁移到kvm 02后继续运行 准备 主机准备 hostname IP地址 系统 配置 kvm 0
  • Docker 国内镜像地址

    http f1361db2 m daocloud io http hub mirror c 163 com https docker mirrors ustc edu cn
  • c++中的类模板

    C 的类模板为生成通用的类声明提供了一种更好的方法 模板提供参数化类型 即能够将类型名作为参数传递给接收方来建立类或者函数 一 定义类模板 include
  • IndexError: index 5 is out of bounds for axis 1 with size 5

    keras中报错 IndexError index 5 is out of bounds for axis 1 with size 5 原因 大概率是你的数据集label没有设置好 keras中数据集标签需要从0开始 并且连续 类似于下图这
  • Unity WebGL错误集锦

    ips 0 Unity的PlayerSettings的otherSettings或者Publish Settings里面的Enable Exceptions里面选择Full StackTrace 可以在打出的包中的浏览器的webgl打印出错
  • 【计算机基础

    定点数的表示 定点数 小数点的位置固定 例 996 007 常规计数 浮点数 小数点的位置不固定 例 9 96007 10 2 科学计数法 二进制的定点数 浮点数也类似 无符号数 整个机器字长的全部二进制位均为数值位 没有符号位 相当于数的
  • 关于Linux和Shell的相关书籍

    入门类 一直认为 在一个系统上学习开发之前 首先需要熟悉这个系统的使用 鉴于天朝的国情 绝大部分人第一个接触的操作系统就是Windows 因此对于这绝大部分人来说 如果要学习Linux开发 学会使用这个系统都是必不可少的一个环节 现在的Li
  • UVa 1347 Tour

    题目 Tour 题意 来自luogu John Doe想用最小的路程游览完所有目的地 每个目的地都用坐标xi yi表示 任何两目的地的xi都不相同 两目的地之间的路程是两点之间的直线距离 John是这样走的 他从最左边的点开始 然后只能向右