UVA 1025 -- A Spy in the Metro 

题意:

    一个间谍要从第一个车站到第n个车站去会见另一个,在是期间有n个车站,有来回的车站,让你在时间T内时到达n,并且等车时间最短,输出最短等车时间。

思路:

    先用一个has_train[t][i][0]来表示在t时刻,在车站i,是否有往右开的车。同理,has_train[t][i][1]用来保存是否有往左开的车。

用d(i,j)表示时刻i,你在车站j,最少还需要等待多长时间。边界条件是d(T,n)=0,其他d(T,i)为正无穷。

每次有三种决策:

①:等一分钟。

②:搭成往右开的车(如果有)。

③:搭成往左开的车(如果有)。

  1. #include<iostream>
  2. #include<cstring>
  3. using namespace std;
  4. const int INF = 0x3f3f3f3f;
  5. int t[];///存储站台间的时间间隔
  6. int has_train[][][];///has_train[i][j][0]在i时刻j站台是否有向右行驶的车
  7. ///has_train[i][j][1]在i时刻j站台是否有向左行驶的车
  8. int dp[][];
  9. int main()
  10. {
  11. int n;///(2 ≤ N ≤ 50)
  12. int Case=;
  13. while(cin>>n && n)
  14. {
  15. memset(has_train,,sizeof(has_train));
  16. int T;///(0 ≤ T ≤ 200)
  17. cin>>T;
  18. for(int i=;i<n;i++)
  19. cin>>t[i];///(1 ≤ ti ≤ 20)
  20. int m1;///向右行驶
  21. cin>>m1; ///(1 ≤ M1 ≤ 50)
  22. for(int i=;i<m1;i++)
  23. {
  24. int x;
  25. cin>>x;
  26. for(int j=;x<T && j<=n;j++)
  27. {
  28. has_train[x][j][] = ;///向右
  29. x+=t[j];
  30. }
  31. }
  32. int m2;///向左行驶
  33. cin>>m2;///(1 ≤ M2 ≤ 50)
  34. for(int i=;i<m2;i++)
  35. {
  36. int x;
  37. cin>>x;
  38. for(int j=n;x<=T&&j>=;j--)
  39. {
  40. has_train[x][j][] = ;///向左
  41. x+=t[j-];
  42. }
  43. }
  44.  
  45. for(int i=;i<=n-;i++) dp[T][i] = INF;
  46. dp[T][n] = ;
  47. for(int i=T-;i>=;i--)///考察T-i时刻的所有站台
  48. {
  49. for(int j=;j<=n;j++)///在j站台
  50. {
  51. dp[i][j] = dp[i+][j] + ;
  52. if(j<n && has_train[i][j][] && i+t[j]<=T)///可以向左行驶
  53. dp[i][j] = min(dp[i][j],dp[i+t[j]][j+]);
  54. if(j> && has_train[i][j][] && i+t[j-]<=T)///可以向右行驶
  55. dp[i][j] = min(dp[i][j],dp[i+t[j-]][j-]);
  56. }
  57. }
  58. cout<<"Case Number "<<Case++<<": ";
  59. if(dp[][] >= INF) cout<< "impossible" << endl;
  60. else cout<<dp[][]<<endl;
  61. }
  62. return ;
  63. }

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

  1. UVA - 1025 A Spy in the Metro[DP DAG]

    UVA - 1025 A Spy in the Metro Secret agent Maria was sent to Algorithms City to carry out an especia ...

  2. uva 1025 A Spy in the Metro 解题报告

    A Spy in the Metro Time Limit: 3000MS     64bit IO Format: %lld & %llu Submit Status uDebug Secr ...

  3. UVA 1025 A Spy in the Metro 【DAG上DP/逆推/三维标记数组+二维状态数组】

    Secret agent Maria was sent to Algorithms City to carry out an especially dangerous mission. After s ...

  4. UVa 1025 A Spy in the Metro (DP动态规划)

    题意:一个间谍要从第一个车站到第n个车站去会见另一个,在是期间有n个车站,有来回的车站,让你在时间T内时到达n,并且等车时间最短, 也就是尽量多坐车,最后输出最少等待时间. 析:这个挺复杂,首先时间是 ...

  5. UVa 1025 A Spy in the Metro(动态规划)

    传送门 Description Secret agent Maria was sent to Algorithms City to carry out an especially dangerous ...

  6. DAG的动态规划 (UVA 1025 A Spy in the Metro)

    第一遍,刘汝佳提示+题解:回头再看!!! POINT: dp[time][sta]; 在time时刻在车站sta还需要最少等待多长时间: 终点的状态很确定必然是的 dp[T][N] = 0 ---即在 ...

  7. World Finals 2003 UVA - 1025 A Spy in the Metro(动态规划)

    分析:时间是一个天然的序,这个题目中应该决策的只有时间和车站,使用dp[i][j]表示到达i时间,j车站在地上已经等待的最小时间,决策方式有三种,第一种:等待一秒钟转移到dp[i+1][j]的状态,代 ...

  8. uva 1025 A Spy int the Metro

    https://vjudge.net/problem/UVA-1025 看见spy忍俊不禁的想起省赛时不知道spy啥意思 ( >_< f[i][j]表示i时刻处于j站所需的最少等待时间,有 ...

  9. UVA 1025 "A Spy in the Metro " (DAG上的动态规划?? or 背包问题??)

    传送门 参考资料: [1]:算法竞赛入门经典:第九章 DAG上的动态规划 题意: Algorithm城市的地铁有 n 个站台,编号为 1~n,共有 M1+M2 辆列车驶过: 其中 M1 辆列车从 1 ...

随机推荐

  1. 最简单的方式实现rem布局

    加上如下js,px转换成rem需要手动,计算方式:量的大小除以100,就等于rem,例如:量的设计稿元素宽度是120,那么就写成{width: 1.2rem},这样写有什么问题,待研究,也欢迎补充 & ...

  2. 北京化妆时尚气息自适应CSS例子

    三里屯太古广场——北京化妆时尚气息的先锋阵地! “乐色起义”创意化妆设计大赛——国内最具创意的公益设计大赛! CNature——国内最具个性的时尚环保公益组织! 一个多么奇妙的组合!就在2010年的这 ...

  3. js中new到底做了什么?如何重写new?

    new 构造函数()执行顺序1.在堆中开辟对象内存空间, 记为obj2.在obj 中添加__proto__属性并指向 构造函数.prototype3.将构造函数中的this 指向obj4.执行构造函数 ...

  4. leetcode240 搜索二维矩阵 II

    题目: 编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target.该矩阵具有以下特性: 每行的元素从左到右升序排列. 每列的元素从上到下升序排列. 示例: 现有矩阵 ma ...

  5. json字符串与json对象的转换

    JSON(JavaScript Object Notation)格式是开发中较为常见的数据格式,优点是轻量,便于理解和解析生成.JSON对象是一个无序的键值对集合,以 { } 为开头和结尾,键与键之间 ...

  6. RT-Thread中的串口DMA分析

    这里分析一下RT-Thread中串口DMA方式的实现,以供做新处理器串口支持时的参考. 背景 在如今的芯片性能和外设强大功能的情况下,串口不实现DMA/中断方式操作,我认为在实际项目中基本是不可接受的 ...

  7. 一文全面了解NB-IoT技术优势及特点

    1.NB-IOT多输入多输出技术 NB-IoT可以利用多天线技术抑制信道传输衰弱,获得分集增益.空间复用增益和阵列增益,在发送端和接收端均采用多天线实现信号同时发送和接收: 因此就形成了一个并行的多空 ...

  8. Charles中使用Map Local提高测试效率

    书接上回,上次说到Charles中可以使用修改返回值来模拟接口返回,这次我们来说一下Charles中另外一个强大的功能. 我们用手机连接Charles,具体可以参考上一篇<借助Charles来测 ...

  9. 修正zen cart商品评论显示太短的问题

    找到includes\modules\pages\product_reviews\header_php.php $reviews_query_raw = “SELECT r.reviews_id, l ...

  10. datax二次开发

    从hive抽取数据,写入hbase 一.datax插件hbase12xwriter开发 查看datax源码,发现有hbase094xwriter和hbase11xwriter源码,说明datax支持h ...