UVA1025---A Spy in the Metro(DP)】的更多相关文章

http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=35913 Secret agent Maria was sent to Algorithms City to carry out an especially dangerous mission. Afterseveral thrilling events we find her in the first station of Algorithms City Metro, exam…
题意:一个间谍要从第一个车站到第n个车站去会见另一个,在是期间有n个车站,有来回的车站,让你在时间T内时到达n,并且等车时间最短, 也就是尽量多坐车,最后输出最少等待时间. 析:这个挺复杂,首先时间是一个顺序,设d(i,j)表示时刻 i 在第 j 个车站,最少还要等待多长时间,那么边界是d(T, n) = 0. 并且有三种决策: 决策一:等着 d[i][j] = d[i + 1][j] + 1; 为什么从i + 1 过来呢? 你想一下,DP表示等待的时间,那么是不是应该倒着来呢? 决策二:有往右…
A Spy in the Metro Secret agent Maria was sent to Algorithms City to carry out an especially dangerous mission. After several thrilling events we nd her in the rst station of Algorithms City Metro, examining the time table. The Algorithms City Metro…
题目链接: https://vjudge.net/problem/UVA-1025 题解: 详情请看紫书P267. 与其说是DP题,我觉得更像是模拟题,特别是用记忆化搜索写. 递推: #include <iostream> #include <cstdio> #include <cstring> #include <cstdlib> #include <string> #include <vector> #include <ma…
传送门 Description Secret agent Maria was sent to Algorithms City to carry out an especially dangerous mission. After several thrilling events we find her in the first station of Algorithms City Metro, examining the time table. The Algorithms City Metro…
传送门 参考资料: [1]:算法竞赛入门经典:第九章 DAG上的动态规划 题意: Algorithm城市的地铁有 n 个站台,编号为 1~n,共有 M1+M2 辆列车驶过: 其中 M1 辆列车从 1 号站台驶向 n 号站台,M2 辆列车从 n 号站台驶向 1 号地铁: (单程线,M1 辆列车到达 n 号站台后不会回返,同理 M2) 特工 Maria 要在 T 时刻到达 n 号站台与特务会面,但为了保证安全,在会面前尽量呆在行进的列车中: 现给出你这 M1+M2 辆列车的发车时刻: 问如何换乘列车…
分析:时间是一个天然的序,这个题目中应该决策的只有时间和车站,使用dp[i][j]表示到达i时间,j车站在地上已经等待的最小时间,决策方式有三种,第一种:等待一秒钟转移到dp[i+1][j]的状态,代价为1.第二种:如果可以则向右上车,转移到dp[i+t][j+1],无代价,t为列车行驶时间.第三种与第二种相同.初始状态为dp[0][1] = 0,其他为INF.答案为dp[T][n]. 代码如下: #include<iostream> #include<cstdio> #inclu…
参考:https://blog.csdn.net/NOIAu/article/details/71517440 https://blog.csdn.net/c20180630/article/details/75245665 https://blog.csdn.net/rechard_chen/article/details/41357173 https://blog.csdn.net/acvay/article/details/43565183 #include <iostream> #in…
#include <iostream> #include <cstring> #include <cstdio> using namespace std; ]; ][]; //dp[i][j]记录在第i个车站需要等待时间 ][], r[][]; //l[i][j]第i个车站在j时刻是否有从左边行驶的车辆 r[i][j]右方向同l[i][j] ; int min(int a,int b){ if(a<b) return a; return b; } int main…
原题链接 pdf 题目大意 给出一张无向图图,求该图的最小瓶颈生成树. 无向图的瓶颈生成树:无向图\(G\)的一颗瓶颈生成树是这样的一颗生成树:它最大的边权值在\(G\)的所有生成树中是最小的.瓶颈生成树的值为\(T\)中最大权值边的权. 该图建立在坐标系中, 给出每个点的坐标.任意两点之间都有边,边权即为两点间的距离. 题解 由于只关心生成树的最大值,我们可以将边从小到大排序,依次加入(若构成环则不加入),直到构成一颗生成树. 相信你已经发现了:这不就是Kruskal算法吗? 于是,我们得出结…