洛谷P1523 旅行商简化版(DP)
题目:
P1523 旅行商简化版
解析
可以看做是两个人同时从西往东走,经过不一样的点,走到最东头的方案数
设\(f[i][j]\)表示一个人走到i,一个人走到j的最短距离(\(i<j\))
第\(j+1\)个位置,两个人都可能走,两种情况
- \(f[i][j+1]=min\{f[i][j+1],f[i][j]+dis[j][j+1]\}\)位置在j的人走到了j+1位置
- \(f[j][j+1]=min\{f[j][j+1],f[i][j]+dis[i][j+1]\}\)位置在i的人走到了j+1位置
代码:
#include <bits/stdc++.h>
using namespace std;
const int N = 1010;
int n, m;
double f[N][N], dis[N][N];
struct node {
double x, y;
bool operator <(const node &oth) const {
return x < oth.x;
}
} e[N];
double calc(node a, node b) {
return sqrt((a.x - b.x) * (a.x - b.x) + (a.y - b.y) * (a.y - b.y));
}
int main() {
ios::sync_with_stdio(false);
cin >> n;
for (int i = 1; i <= n; ++i)
cin >> e[i].x >> e[i].y;
sort(e + 1, e + 1 + n);
for (int i = 1; i <= n; ++i)
for (int j = i + 1; j <= n; ++j)
dis[i][j] = calc(e[i], e[j]), f[i][j] = LLONG_MAX;
f[1][2] = dis[1][2];
for (int i = 1; i <= n; ++i)
for (int j = i + 1; j <= n; ++j) {
f[i][j + 1] = min(f[i][j + 1], f[i][j] + dis[j][j + 1]);
f[j][j + 1] = min(f[j][j + 1], f[i][j] + dis[i][j + 1]);
}
double ans = LLONG_MAX;
for (int i = 1; i < n; ++i) ans = min(ans, f[i][n] + dis[i][n]);
printf("%.2lf", ans);
}
洛谷P1523 旅行商简化版(DP)的更多相关文章
- P1523 旅行商简化版
P1523 旅行商简化版 题目背景 欧几里德旅行商(Euclidean Traveling Salesman)问题也就是货郎担问题一直是困扰全世界数学家.计算机学家的著名问题.现有的算法都没有办法在确 ...
- 洛谷P1782 旅行商的背包[多重背包]
题目描述 小S坚信任何问题都可以在多项式时间内解决,于是他准备亲自去当一回旅行商.在出发之前,他购进了一些物品.这些物品共有n种,第i种体积为Vi,价值为Wi,共有Di件.他的背包体积是C.怎样装才能 ...
- 洛谷.1782.旅行商的背包(背包DP 单调队列)
题目链接(卡常背包) 朴素的多重背包是: \(f[i][j] = \max\{ f[i-1][j-k*v[i]]+k*w[i] \}\),复杂度 \(O(nV*\sum num_i)\) 可以发现求\ ...
- 洛谷P1782 旅行商的背包
传送门啦 这个题不用二进制优化的话根本不行,现学的二进制优化,调了一段时间终于A了,不容易.. 如果不懂二进制优化的话可以去看我那个博客 二进制优化多重背包入口 不想TLE,不要打memset,一定要 ...
- vijosP1014 旅行商简化版
vijosP1014 旅行商简化版 链接:https://vijos.org/p/1014 [思路] 双线DP. 设ab,ab同时走.用d[i][j]表示ab所处结点i.j,且定义i>j,则有转 ...
- [vijos P1014] 旅行商简化版
昨天早上上课讲旅行商问题,有点难,这周抽空把3^n的算法码码看.不过这个简化版已经够折腾人了. 其一不看解析不知道这是双进程动态规划,不过我看的解析停留在f[i,j]表示第一个人走到i.第二个人走到j ...
- 洛谷 P5279 - [ZJOI2019]麻将(dp 套 dp)
洛谷题面传送门 一道 dp 套 dp 的 immortal tea 首先考虑如何判断一套牌是否已经胡牌了,考虑 \(dp\).我们考虑将所有牌按权值大小从大到小排成一列,那我们设 \(dp_ ...
- 洛谷2344 奶牛抗议(DP+BIT+离散化)
洛谷2344 奶牛抗议 本题地址:http://www.luogu.org/problem/show?pid=2344 题目背景 Generic Cow Protests, 2011 Feb 题目描述 ...
- Lightning Conductor 洛谷P3515 决策单调性优化DP
遇见的第一道决策单调性优化DP,虽然看了题解,但是新技能√,很开森. 先%FlashHu大佬,反正我是看了他的题解和精美的配图才明白的,%%%巨佬. 废话不多说,看题: 题目大意 已知一个长度为n的序 ...
随机推荐
- testlink 1.9.19安装
环境平台: 系统:Centos 7.6 数据库:mysql 5.7 PHP版本:PHP 5.6 testlink版本:testlink- 链接:https://pan.baidu.com/s/10Pr ...
- Spark之RDD
Spark学习之路Spark之RDD 目录 一.RDD的概述 1.1 什么是RDD? RDD(Resilient Distributed Dataset)叫做弹性分布式数据集,是Spark中最基本的数 ...
- 3.2 Spark运行架构
一.基本概念 1.RDD Resillient Distributed Dataset 弹性分布式数据集 2.DAG 反映RDD之间的依赖关系 3.Executor 进程驻守在机器上面,由进程派生出很 ...
- 201871010107-公海瑜《面向对象程序设计(java)》第十四周学习总结
201871010107-公海瑜<面向对象程序设计(java)>第十四周学习总结 项目 内容 这个作业属于 ...
- 201871010132-张潇潇-《面向对象程序设计(java)》第六-七周学习总结
201871010132-张潇潇-<面向对象程序设计(java)>第六-七周学习总结 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh ...
- sikuli for循环例子
hover("fiE.png")for x in range(99): type('p',KEY_CTRL) wait("HEIHEUULEWW5.png") ...
- svn服务器端程序安装(二)
1.下载 Setup-Subversion-1.8.9-1.msi 2. 双击,一直next (1) 修改安装地址,要求是非中文无空格 3. 安装完成后,检查是否已添加到系统的环境变量PATH中,若没 ...
- 基于github发布 个人网站/博客
我们可以使用GitHub去发布自己的网站了(静态网站), 只要经过简单几步即可.这样小伙伴可以给朋友或面试官展示自己个人项目啦. 第一步:创建一个新仓库 第二步:在仓库选择“Settings”页,找到 ...
- windows7 - windows10开启802.1x md5质询
(win7 win10通用)20190324 全程不需重启 注:如果导入后没有看到md5,那得去注册表看看是否真的有键值(我的一开始提示成功,但是注册表里看不到,后来发现复制时候多了一些不可见的字 ...
- it's over | 2019 CSP-S 第一轮认证
不知道自己有没有凉,毕竟我们省这么弱(据说有的省80都悬... 其实这几天对初赛基本没什么感觉,可能是没给自己多大压力吧,倒是班上的一群同学似乎比我们还着急,我们的数学课代表兼数竞大佬特意给我画了吉祥 ...