UVA1347(Tour)(DAG上的动态规划)

uva1347 旅行 不回头旅行商 1. 多路径同起步。 2. 找到解决问题的办法后再找合适的状态和决策,然后状态转换。 3. 不回头,所以可以依次状态转换,若可以回头,则转变为旅行商问题。 阅读详情

UVA1347(Tour)(DAG上的动态规划)

本题的难点主要在于状态的定义,即如何去表示节点的状态。

在紫书中,作者选择了dp(i,j)来表示第一个人走到了i点,第二个人走到了j点,且编号小于max(i,j)的节点都被走过。因为dp[i][j]和dp[j][i]是重复的,因此规定i>j。这样可以保证无后效性,因为小于max(i,j)的点都被选过了,接下来就是在大于max(i,j)里面选点,所以之后的状态不会影响到前面的状态。

接下来考虑状态如何转移,由于状态的定义,下一步只能向编号大于i的节点移动,那么可以是第一个人向前走一步,或者第二个人向前走一步。从而得到状态转移方程:
dp[i][j]=min(dp[i+1][j]+dist(i,i+1),dp[i+1][i]+dist(j,i+1)),其中dist表示两点间的欧几里得距离。

递归起点是dp[2][1]。递归边界时dp[n-1][j],因为此时只剩下最后一个点没有经过,且dp[n-1][j]=dist(n-1,n)+dist(j,n)。

自然,ans=dp[2][1]+dist(1,2)。时间复杂度O为(n2)

#include<bits/stdc++.h>
using namespace std;
const int INF=0x3f3f3f3f;
int n;
int x[1005];
int y[1005];
double dp[1005][1005];
double dist(int a,int b)
{
	return sqrt((x[b]-x[a])*(x[b]-x[a])+(y[b]-y[a])*(y[b]-y[a]));
}
double d(int i,int j)
{
	if(dp[i][j]!=0)return dp[i][j];
	dp[i][j]=min(d(i+1,i)+dist(j,i+1),d(i+1,j)+dist(i,i+1));
	return dp[i][j];
}
void solve(void)//对于dp[i][j],规定i>j 
{
	memset(dp,0,sizeof(dp));
	double di=dist(n-1,n);
	for(int i=1;i<n-1;i++)
	dp[n-1][i]=di+dist(i,n);
	double ans=d(2,1)+dist(1,2);
	printf("%.2f\n",ans);
}
int main(void)
{
//	freopen("out.txt","w",stdout);
	while(~scanf("%d",&n))
	{
		for(int i=1;i<=n;i++)
		scanf("%d%d",&x[i],&y[i]);
		solve();
	}
//	fclose(stdout);
}
//3
//1 1
//2 3
//3 1
//4
//1 1
//2 3
//3 1
//4 2
Windows 上 openclaw onboard --install-daemon 命令的安装位置和启动配置 摘要:Windows系统中,执行openclaw-cnonboard--install-daemon命令会创建计划任务OpenClawGateway,该任务在用户登录时自动运行位于%USERPROFILE%.openclaw\gateway.cmd的脚本文件来启动服务。管理方法包括通过任务计划程序或命令行(schtasks)查看/启停任务,使用openclaw gateway命令操作服务,或通过删除计划任务和脚本文件完全卸载服务。该机制确保OpenClawGateway服务随系统登录自动启动。(149字) 阅读详情

相关推荐

三维(点云)语义分割概述以及方法总结

语义分割 语义分割需要两部分 classification: 需要全局信息 segmentation:更加依赖全局信息和局部信息 一般的网络结构是: 提特征-特征映射-特征图压缩(降维)-全连接-分类,其实就是encoder-decoder的过程, 比如在二维的的pspnet,fcn等等 0. 三维表示的数据结构 Point cloud 无序性 点云实际上是无序的,比如有8个点云,你放到...

renhaofan的博客 3万+

UVA - 1347 Tour(双调旅行商问题)

UVA - 1347 Tour 题目 旅行商问题描述:平面上n个点,确定一条连接各点的最短闭合旅程。 题目按照x递增顺序给出,各点x不同。 分析 动态规划 题目说从最左端走到最右端,再返回最左端。可以想象成两个人同时从最左端沿着两条不同路径走到最右端,保证每个点走到一次,则他们两个的路径相加最短就是答案。 最难的就是定义状态,状态定义的好坏直接影响题目的解决 将题目给出的点按 x 大小编号 1 ...

Stormjing的博客 605

Flink SQL数据血缘实战:如何用Calcite追踪字段级数据流向(附源码示例)

本文深入探讨了如何利用Apache Calcite解析Flink SQL执行计划,实现字段级数据血缘的追踪。通过扩展Calcite的元数据处理器,特别是针对Flink特有的Snapshot等节点,文章提供了从获取优化后的逻辑计划到提取并可视化血缘关系的完整实战方案,并附有核心源码示例,帮助开发者构建实时数仓的数据治理能力。

weixin_29032337的博客 142

UVA1347

题意: 思路;         一看图形以为几何(我在看dp啊),看了题解才明白,

清澈不在远方 717

多期DID实战指南:从CSDID原理到分组加权策略

本文深入解析多期DID(CSDID方法)在政策评估中的实战应用,从核心思想到分组加权策略全面讲解。通过电商扶贫等案例,详细演示如何正确处理分批实施政策的数据分析,包括分组拆解、子模块DID操作及加权平均选择,帮助研究者规避常见误区,提升政策评估的准确性。

weixin_26833503的博客 524

【AI大模型:认知升级】1、全面解析AI大模型:从起源到发展脉络与应用价值

AI大模型是具备超大规模参数(千亿至万亿级)、海量训练数据(TB级)和强迁移学习能力的基础模型。其技术特征包括Transformer架构革新、大数据预训练范式及参数规模超过临界值后的能力涌现。发展历程经历了语言模型突破(2018-2020)、多模态融合(2021-2023)和架构创新(2023至今)三波浪潮,遵循数据、算力、算法协同进化规律。底层驱动因素包括能力涌现机制、算力基础设施突破和应用场景拓展,正在重构产业价值链。通过"知识星系""认知

2025博客之星Top81。专注AI工程化与架构实战。从分布式思维到模型部署,用工程化视角为你厘清AI落地的真实路径。 2292

UVA—1347 (经典动态规划)Tour

原题链接: https://vjudge.net/problem/UVA-1347/origin 测试样例 Sample Input 3 1 1 2 3 3 1 4 1 1 2 3 3 1 4 2 Sample Output 6.47 7.89 题意: 给定你nnn个横坐标xxx,递增的点。需要你设计一条最短欧几里得距离路线,要求从最左边的点出发,走到最右边的点之后再返回,且除了最左边的点和最右边的点之外的每个点都只走了一次。 解题思路: 这道题是一道经典的动态规划题目。如果我们按题目意思去思考那很难

pursuit的博客 795

从数据到行动:客服运营必分析的8大核心维度

服务运营正从被动响应升级为数据驱动型战略体系。客服中心的海量交互数据能精准反映服务效能、客户体验及运营短板,关键在于实现数据的可视化与可操作化。本文系统剖析了八类核心数据指标:1)客户行为数据(CSAT/NPS/投诉内容);2)通话效率指标(AHT/接通率);3)服务质量(质检体系/情绪识别);4)坐席绩效(FCR/客户评价);5)流程与知识库(转接率/工单时效);6)渠道流量分析;7)异常预警机制;8)成本收益模型。通过构建多维数据分析体系,企业可在客户全生命周期管理中实现服务升级、风险防控与资源

2202_75469062的博客 1400

UVA1347 旅行 Tour (样例解释 + 思路心得 + 代码)

思路和心得都在代码里, 快去看看吧

这个人是一个c++修狗 466

FreeRTOS深入教程(任务创建的深入和任务调度机制分析)

本篇文章将带大家深入学习任务的创建和分析任务调度的机制。本篇文章深入的讲解了任务创建的内部实现和任务调度的源代码分析和实现,学习这篇文章有助于更深入的学习FreeRTOS的源码。

m0_49476241的博客 6391

基于 MFC 和 C++ 的语音识别客户端实现方案

语音 SDK:[Microsoft Speech SDK](https://learn.microsoft.com/zh-cn/azure/cognitive-services/speech-service/speech-sdk)(建议使用最新版)1. **Azure 语音服务密钥**:需要在 [Azure 门户](https://portal.azure.com/) 中创建语音资源,获取密钥和区域(如 `eastasia`),替换代码中的占位符。

寒寒豆豆软件公司的博客 154

UVA-1347(dp)

Tour UVA - 1347 问题描述: 输入输出说明: 思路: //规定i>j dp[i][j]表示第一个人走到位置i,第二个人走到位置j,还所需要走的最小距离; dist(i,j)表示i,j两个位置之间的距离; //要么第一个人走到i+1,要么第二个人走到i+1, dp[i][j]=min(dp[i+1][j]+dist(i,i+1),dp[i+1][i]+dist(j,i+1)); ac code: #include<bits/stdc++.h> using namespace

雪岩的博客 582

ATECC508A芯片开发笔记(三):获取508A串号、随机数源码及I2C抓包分析

ATECC508A芯片开发笔记(三):读取508A串号、获取随机数源码及I2C抓包分析 APP层函数编写及源码分析 At508_GetSernum() GetSernum抓包记录 At508_GetRandom( ) GetRandom抓包记录 经过前两章节,CryptoAuthlib库已经成功适配在代码中了,下面简单测试一下API函数,并分析下I2C通讯流程: APP层函数编写及源码分析利用li

HowieXue 薛永浩的博客 2万+

UVA1347 - Tour (DAG上的DP)

题目链接http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=4093 【题意】

转移到dawxy.com 1172

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

UVA 1347 Tour

https://cn.vjudge.net/problem/UVA-1347 题目 给定平面上 $n$($n\leqslant 1000$)个点的坐标(按照 $x$ 递增的顺序给出。各点 $x$ 坐标不同,且均为正整数),你的任务是设计一条路线,从最左边的点除法,走到最右边的点后再返回,要求除了最左点和最右点之外每个点恰好经过一次,且路径总长度最短。两点间的长度为他们的欧几里得距离。...

110

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

*UVA - 1347 Tour (DAG上的动态规划)

题目链接:UVA - 1347 Tour #include &lt;bits/stdc++.h&gt; using namespace std; struct node { double x, y; }a[1005]; double dis(int i, int j) { return sqrt((a[i].x - a[j].x) * (a[i].x - a[j].x) + (...

Miracle_QSH的博客 698

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Tour UVA - 1347 旅行 DAG

题目链接 给定平面上n(n≤1000)个点的坐标(按照x递增的顺序给出。各点x坐标不同,且均为正整数),你的任务是设计一条路线,从最左边的点出发,走到最右边的点后再返回,要求除了最左点和最右点之外每个点恰好经过一次,且路径总长度最短。两点间的长度为它们的欧几里德距离,如图9-4所示。 【分析】        “从左到右再回来”不太方便思考,可以改成:两个人同时从最左点出发,沿着两条不同的路...

Nicolas的博客 483

UVA 1347 Tour(DP) 紫书训练

题目链接:UVA 1347 做题感受:看到题自己想没啥思路,也想不出将一人来回改成两人同时走到终点,自己本来的想法是构造一个三维数组dp[i][j][0]和dp[i][j][1]分别表示过去和回来的状态,但是写到后面发现状态转移方程写不出来,不知道该怎么转移,感觉主要还是状态转移方程太难写,结合lrj的分析和别人的博客分析最后才勉强写出来了。(其实我真没看出来这跟DAG有特别大关系,我就觉得勉勉强强搭上边) (感觉思路分析太长的还是直接看概括吧,个人感觉自己思路分析写的不太好) 思路: 紫书上写的挺明白了,

m0_52834059的博客 181

例题 9-3 旅行(Tour, ACM/ICPC SEERC 2005, UVa1347)

原题链接:https://vjudge.net/problem/UVA-1347 分类:DAG 备注:经典问题 #include<bits/stdc++.h> using namespace std; const int maxn=1e3+5; struct Point{ int x,y; }p[maxn]; int n; double dis[maxn][maxn],res[maxn][maxn]; double dp(int i,int j){ if(res[i][j]!=0

TK_wang_的博客 423

[DAG] Tour UVa1347

题意 有n个点,以x值的大小顺序给出。求从第一个点(最左端的点)出发,到最后一个点(最右端的点),再返回第一个点的最短路径长度,要求每个点都只能经过一次。 题解 感觉这题的思维量特别大,独立做不容易想。状态和状态转移方程确定的很巧妙。 本题的状态有两个变量,设表示1~都已经走过,且目前在i和j处还需要走的最短长度。 对于该题,我有几点想法(当然日后可能打脸) 1. 对于一个较为困难的问...

loyxCCS的博客 296

Uva 1347 tour(DAG)

题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=38898 题意:有n个点的坐标(n 解法:请见紫书(算法竞赛入门经典 第二版) P269 总结:对于求最大和最小,并且是DAG。我们可以采用dp的思想。先写出更新方程,然后根据情况采用记忆化搜索或者刷表法更新。 AC: #include #include

longshanxiaoxuesheng的博客 404

Tour UVA - 1347 (旅行,dp)

John Doe, a skilled pilot, enjoys traveling. While on vacation, he rents a small plane and starts visiting beautiful places. To save money, John must determine the shortest closed tour that connects h...

tomjobs的博客 408

Tour UVa 1347 (DAG)

本题难在设置状态表示。 题目要求先从左到右,再从右到左沿x轴方向经历坐标系上的点(1~n点),可以考虑成两条路径,分别从最左到最右,分别经历不同点且不能重合(除了起点和终点)。可以想到用$d(i,j)$表示一条路走到了$i$,一条路走到了$j$。因为两条路加起来要cover路径上所有点,所以$d(i,j)$可以表示$max(i,j)$和之前的点已经全被走过,还需走多远才能满足条件。因为两条路没有...

weixin_30699463的博客 108

UVa 1347 - Tour(动态规划)

按照横坐标递增的顺序给出1≤n≤1000个点的坐标,求从左边走到右边再走回来,除了两端的点每个点恰好经过一次的走法的距离和。 书上给出了详细的思路,把问题抽象成两个人从一端走到另一端最短距离和。 状态转移方程为:d(i,j)=min(d(i+1,i)+dist(i+1,j),d(i+1,j)+dist(i+1,i)) 边界为:d(n-1,j)=d(n,i)+d(n,j)

wcr1996的专栏 1760

Uva 1347 旅行

DP

Luckfort 446

[动态规划] UVa1347 旅行 (DAG的固定起点终点的最短路)

题目 思路 1.抽象(神乎其技):由于从左到右不方便思考,可以将问题转换为,两个人同时从最左点出发,沿着两条路径走,最后都走到最右点,并且除了起点和终点外每个点恰好被一个人走过。 2.状态定义:(i,j),表示1~i已经全部走过,且两个人分别位于i,j(i&gt;j)。 3.指标函数:d(i,j),还需要走的距离。 4.状态转移方程: d(i,j)=min(d(i+1,j)+d...

OI - IceCab 1213
上一篇: UVA1025(A Spy in the Metro) DAG上的动态规划
下一篇: UVA 12563 (劲歌金曲)(多条件最优的动态规划问题)(01背包
WedsonLin
博客等级 码龄7年 1粉丝 49原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值