p269专题

uva 1347 动态规划DAG lrj-P269

题意: 给出按照 x 坐标排序的一系列二维坐标上的点,让你通过来回走一圈,把所有点都恰好走一遍,除了最左端和最右端的点 使得总路程最短 题解: 让两个人同时走,并且不重合,从左边开始走道右边去 令dp【i】【j】表示两个人分别走道  i  和走到  j 的时候的最短路 因为dp【i】【j】==dp【j】【i】 故强行令  i > j 然后dp【i】【j】可以转移到dp【i+1

uva 437 动态规划 lrj - P269

题意: 给出不超过30个立方体,每一种有无穷多个。 要求这些立方体堆成一个尽量搞的柱子,使得每一个立方体下面的立方体的底面长宽都大于上面的底面长宽 题解: 很明显我们可以将每个立方体当做3个或者6个不一样的不可以旋转的长方体 下面代码当做6个,是为了方便计算,这样在判断的过程中不需要加太多条件 而且数据量不大,可以这样做 dp思想: 01背包的思想,放与不放,最后求一

dp专题 lrj-p269 uva A Spy in the Metro 2003wf

lrj 入门经典  p267 从本题得到的收获: 分清主线: 影响决策的只有时间以及所处的车站 理清次线: 火车跑来跑去的,我们需要处理好他们,为我们的主线服务,即,在某些车站的时候,是否有车在这个时间 故令 dp【】【】,第一维表示时刻,第二维表示在某车站出发,需要等待的时间 写dp就要注意:初始化条件: 这里的初始化条件就是dp【T】【i】为INF,但是在终

紫书P269-uva1347题解,结合紫书解析加入了一些个人理解

该题在vjudge上的链接 在紫书的动态规划那一节看到了这道题。结合刘汝佳的解析,在代码里加了一些个人的理解,已经提交UVA通过。 //将问题看做两个人从起点出发,不能走重复的点,计算两个人到达终点时走过的距离和#include <bits/stdc++.h>#define mem(a, b) memset(a, b, sizeof(a))#define scf(a) scanf("%d"