昨天早上上课讲旅行商问题,有点难,这周抽空把3^n的算法码码看。不过这个简化版已经够折腾人了。

其一不看解析不知道这是双进程动态规划,不过我看的解析停留在f[i,j]表示第一个人走到i、第二个人走到j,且1~max(i,j)的都走过的最短路,后面的动态转移方程是我自己写的,不过我的貌似和别人的不太一样?

其二不知道为什么坐标改成real类型就不会207了,这可是个bug?纠结了我一晚上啊昨晚又熬夜了今天早上物理课又打瞌睡了…QAQ

其三给ans或者f数组赋初值不能写maxlongint一定要1e40,因为答案都比maxlongint要大!一开始我还以为是动规出错了怎么一直输出2147xxxxx,哎。

至少表扬下自己想出了动态转移方程吧,话说还有优化空间,因为f[i,j]总是=f[j,i]

program vijos_p1014;
var f,d:array[..,..] of double;
lx,ly:array[..] of real;
n,i,j,k:longint;
ans,t:extended;
function min(x,y:double):double;
begin
if x<y then exit(x) else exit(y);
end; function dis(p,q:integer):double;
var t:real;
begin
t:=(lx[p]-lx[q])*(lx[p]-lx[q])+(ly[p]-ly[q])*(ly[p]-ly[q]);
exit(sqrt(t));
end; procedure qsort(l,r:integer);
var i,j:longint;
midx,midy,t:real;
begin
i:=l;j:=r;midx:=lx[(l+r) div ];midy:=ly[(l+r) div ];
repeat
while (lx[i]<midx) or ((lx[i]=midx) and (ly[i]<midy)) do inc(i);
while (lx[j]>midx) or ((lx[j]=midx) and (ly[j]>midy)) do dec(j);
if i<=j then
begin
t:=lx[i];lx[i]:=lx[j];lx[j]:=t;
t:=ly[i];ly[i]:=ly[j];ly[j]:=t;
inc(i);dec(j);
end;
until i>j;
if j>l then qsort(l,j);
if i<r then qsort(i,r);
end; begin
readln(n);
for i:= to n do
readln(lx[i],ly[i]);
qsort(,n);
for i:= to n do
for j:= to n do
f[i,j]:=1e40;
f[,]:=;
for i:= to n do
for j:= to n do
if (i<>j) or ((i=) and (j=)) then
begin
if i>j then
begin
f[i+,j]:=min(f[i,j]+dis(i,i+),f[i+,j]);
f[i,i+]:=min(f[i,j]+dis(j,i+),f[i,i+]);
end;
if i<=j then
begin
f[i,j+]:=min(f[i,j]+dis(j,j+),f[i,j+]);
f[j+,j]:=min(f[i,j]+dis(i,j+),f[j+,j]);
end;
end;
ans:=1e40;
for i:= to n do
begin
if f[i,n]+dis(i,n)<ans then ans:=f[n,i]+dis(i,n);
end;
writeln(ans::);
end.

旅行商简化版

B.T.W 最近我有一种去哪,哪的OJ就挂的趋势。上周是Codeforces,这周是vijos,难道0 0人品真的差到家了?!

[vijos P1014] 旅行商简化版的更多相关文章

  1. vijosP1014 旅行商简化版

    vijosP1014 旅行商简化版 链接:https://vijos.org/p/1014 [思路] 双线DP. 设ab,ab同时走.用d[i][j]表示ab所处结点i.j,且定义i>j,则有转 ...

  2. 洛谷P1523 旅行商简化版(DP)

    题目: P1523 旅行商简化版 解析 可以看做是两个人同时从西往东走,经过不一样的点,走到最东头的方案数 设\(f[i][j]\)表示一个人走到i,一个人走到j的最短距离(\(i<j\)) 第 ...

  3. P1523 旅行商简化版

    P1523 旅行商简化版 题目背景 欧几里德旅行商(Euclidean Traveling Salesman)问题也就是货郎担问题一直是困扰全世界数学家.计算机学家的著名问题.现有的算法都没有办法在确 ...

  4. 洛谷【P1523】旅行商的背包(算法导论 15-1) 题解

    P1523 旅行商简化版 题目背景 欧几里德旅行商\((Euclidean Traveling Salesman)\)问题也就是货郎担问题一直是困扰全世界数学家.计算机学家的著名问题.现有的算法都没有 ...

  5. 【C#代码实战】群蚁算法理论与实践全攻略——旅行商等路径优化问题的新方法

    若干年前读研的时候,学院有一个教授,专门做群蚁算法的,很厉害,偶尔了解了一点点.感觉也是生物智能的一个体现,和遗传算法.神经网络有异曲同工之妙.只不过当时没有实际需求学习,所以没去研究.最近有一个这样 ...

  6. 洛谷P1782 旅行商的背包[多重背包]

    题目描述 小S坚信任何问题都可以在多项式时间内解决,于是他准备亲自去当一回旅行商.在出发之前,他购进了一些物品.这些物品共有n种,第i种体积为Vi,价值为Wi,共有Di件.他的背包体积是C.怎样装才能 ...

  7. 2016全国研究生数学建模A题多无人机协同任务规划——基于分布式协同多旅行商MTSP遗传算法

    MTSP问题是指:有Ⅳ个城市,要求旅行商到达每个城市各一次,且仅一次,并[旦 1到起点,且要求旅行路线最短.而多旅行商问题M个旅行商从同一个城市(或多个城市)出发.分羽走一条旅路线,且总路程缀短.有关 ...

  8. Bzoj3352 [ioi2009]旅行商

    Time Limit: 20 Sec  Memory Limit: 128 MBSubmit: 89  Solved: 36 Description 旅行商认定如何优化旅行路线是一个非常棘手的计算问题 ...

  9. hdu 4281 Judges' response(多旅行商&DP)

    Judges' response Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) ...

随机推荐

  1. POJ 2385 Apple Catching

    比起之前一直在刷的背包题,这道题可以算是最纯粹的dp了,写下简单题解. 题意是说cows在1树和2树下来回移动取苹果,有移动次数限制,问最后能拿到的最多苹果数,含有最优子结构性质,大致的状态转移也不难 ...

  2. C++—函数

    一.函数的基本知识 要使用C++函数,必须完成一下工作: (1)提供函数定义: (2)提供函数原型: (3)调用函数. 1.定义函数 可以将函数分为两类,有返回值的函数和没有返回值的函数.没有返回值的 ...

  3. 升级MySQL支持utf8mb4字符集详细步骤

    原文:http://lib.csdn.net/article/mysql/4607 第一步:全备份所有数据库 [root@openfire1 mysql]# mysqldump -u root -p ...

  4. 车辆管理系统之搭建框架 添加必要的数据 安装svn(二)

    JAVA EE第一阶段项目——车辆管理系统.MyEclipse + MySQL +powerDesinger +tomcat +svn. 今天组长把项目的分工安排好了!这个周末两天的作业就是我的车主信 ...

  5. Mysql 联结表

  6. weblogic 下载安装部署说明

    http://blog.csdn.net/gaofuqi/article/details/36870887/ http://jingyan.baidu.com/article/d8072ac45f57 ...

  7. 百度编辑器ueditor获取不到内容?请把form放在table等其他元素最外面

    百度编辑器ueditor获取不到内容?请把form放在table等其他元素最外面. <form name="form" method="post" act ...

  8. CAS原理全面分析

    http://blog.chinaunix.net/uid-22816738-id-3525939.html 上文对CAS各方面原理做了很详细.很明了分析,包括CAS架构.认证协议.安全性.登录.认证 ...

  9. 【转】 C++中delete和delete[]的区别

    一直对C++中的delete和delete[]的区别不甚了解,今天遇到了,上网查了一下,得出了结论.做个备份,以免丢失. C++告诉我们在回收用 new 分配的单个对象的内存空间的时候用 delete ...

  10. JavaScript window

    window -- window对象是BOM中所有对象的核心 window,中文"窗口" window对象除了是BOM中所有对象的父对象外,还包含一些窗口控制函数 全局的windo ...