[vijos P1014] 旅行商简化版
昨天早上上课讲旅行商问题,有点难,这周抽空把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] 旅行商简化版的更多相关文章
- vijosP1014 旅行商简化版
vijosP1014 旅行商简化版 链接:https://vijos.org/p/1014 [思路] 双线DP. 设ab,ab同时走.用d[i][j]表示ab所处结点i.j,且定义i>j,则有转 ...
- 洛谷P1523 旅行商简化版(DP)
题目: P1523 旅行商简化版 解析 可以看做是两个人同时从西往东走,经过不一样的点,走到最东头的方案数 设\(f[i][j]\)表示一个人走到i,一个人走到j的最短距离(\(i<j\)) 第 ...
- P1523 旅行商简化版
P1523 旅行商简化版 题目背景 欧几里德旅行商(Euclidean Traveling Salesman)问题也就是货郎担问题一直是困扰全世界数学家.计算机学家的著名问题.现有的算法都没有办法在确 ...
- 洛谷【P1523】旅行商的背包(算法导论 15-1) 题解
P1523 旅行商简化版 题目背景 欧几里德旅行商\((Euclidean Traveling Salesman)\)问题也就是货郎担问题一直是困扰全世界数学家.计算机学家的著名问题.现有的算法都没有 ...
- 【C#代码实战】群蚁算法理论与实践全攻略——旅行商等路径优化问题的新方法
若干年前读研的时候,学院有一个教授,专门做群蚁算法的,很厉害,偶尔了解了一点点.感觉也是生物智能的一个体现,和遗传算法.神经网络有异曲同工之妙.只不过当时没有实际需求学习,所以没去研究.最近有一个这样 ...
- 洛谷P1782 旅行商的背包[多重背包]
题目描述 小S坚信任何问题都可以在多项式时间内解决,于是他准备亲自去当一回旅行商.在出发之前,他购进了一些物品.这些物品共有n种,第i种体积为Vi,价值为Wi,共有Di件.他的背包体积是C.怎样装才能 ...
- 2016全国研究生数学建模A题多无人机协同任务规划——基于分布式协同多旅行商MTSP遗传算法
MTSP问题是指:有Ⅳ个城市,要求旅行商到达每个城市各一次,且仅一次,并[旦 1到起点,且要求旅行路线最短.而多旅行商问题M个旅行商从同一个城市(或多个城市)出发.分羽走一条旅路线,且总路程缀短.有关 ...
- Bzoj3352 [ioi2009]旅行商
Time Limit: 20 Sec Memory Limit: 128 MBSubmit: 89 Solved: 36 Description 旅行商认定如何优化旅行路线是一个非常棘手的计算问题 ...
- hdu 4281 Judges' response(多旅行商&DP)
Judges' response Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
随机推荐
- activiti jbpm相关资源
Activiti 5.16 用户手册 http://www.mossle.com/docs/activiti/index.html jBPM 4.4开发指南 http://www.mossle.com ...
- Python 调用自定义包
创建包 # mkdir -p /python/utils # touch /python/utils/__init__.py # vi /python/utils/Log.pyimport timed ...
- Hbase之插入数据
/** * Created by similarface on 16/8/17. */ import org.apache.hadoop.conf.Configuration; import org. ...
- 测序深度和覆盖度(Sequencing depth and coverage)
总是跑数据,却对数据一无所知,这说不过去吧. 看几篇文章吧 Sequencing depth and coverage: key considerations in genomic analyses( ...
- C++模板特化
一 ."函数模板"与"模板函数" 下面几行代码就是一个"函数模板" template <class T> T abs(T x) ...
- canvas打开本机摄像头
(function () { var video = document.createElement("video"); video.autoplay="autoplay& ...
- Compound Interest Calculator3.0
Compound Interest Calculator3.0 1.利率这么低,复利计算收益都这么厉害了,如果拿100万元去买年报酬率10%的股票,若一切顺利,过多长时间,100万元就变成200万元呢 ...
- poj-------(2240)Arbitrage(最短路)
Arbitrage Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 15640 Accepted: 6563 Descri ...
- IO流--流转换
import java.io.*; //键盘读入 字节流转换成字符流操作 提高效率 public class io { public static void main(String[] args) t ...
- 20145236 《Java程序设计》第八周学习总结
20145236 <Java程序设计>第八周学习总结 教材学习内容总结 第十四章 NIO与NIO2 认识NIO NIO使用频道(Channel)来衔接数据节点,在处理数据时,NIO可以让你 ...