这道题是宁波集训的那道题,讲课时轻描淡写吧(应该是我听课不认真罢了),所以这样就要靠自己的理解了,

dp[i][j][0]表示从左端点开始完成整个区间的最小花费dp[i][j][1]表示从右端点开始完成整个区间的最小花费,就是这样的。

然后记录前驱,因为每次只会从端点开始,不然返回端点的时间是不必要的,这样就可以了,然后最后输出即可。

  1. #include<cstdio>
  2. #include<algorithm>
  3. #include<iostream>
  4. #include<cmath>
  5. #include<cstring>
  6. using namespace std;
  7.  
  8. const int NN=,INF=1e9+;
  9.  
  10. int n;
  11. int t[NN],d[NN];
  12. int f[NN][NN][],fa[NN][NN][];
  13.  
  14. int main()
  15. {
  16. while (~scanf("%d",&n))
  17. {
  18. memset(f,,sizeof());
  19. memset(fa,,sizeof(fa));
  20. for (int i=;i<=n;i++)
  21. scanf("%d",&t[i]);
  22. for (int i=;i<=n;i++)
  23. scanf("%d",&d[i]);
  24. memset(f,,sizeof(f));
  25. for (int k=;k<=n;k++)
  26. {
  27. for (int i=;i+k-<=n;i++)
  28. {
  29. int j=i+k-;
  30. if (f[i+][j][]+d[i+]-d[i]<f[i+][j][]+d[j]-d[i])
  31. {
  32. f[i][j][]=f[i+][j][]+d[i+]-d[i];
  33. fa[i][j][]=;
  34. }
  35. else
  36. {
  37. f[i][j][]=f[i+][j][]+d[j]-d[i];
  38. fa[i][j][]=;
  39. }
  40. if (f[i][j][]>=t[i]||f[i][j][]>INF) f[i][j][]=INF;//没什么大不了的,防止溢出。
  41. if (f[i][j-][]+d[j]-d[j-]<f[i][j-][]+d[j]-d[i])
  42. {
  43. f[i][j][]=f[i][j-][]+d[j]-d[j-];
  44. fa[i][j][]=;
  45. }
  46. else
  47. {
  48. f[i][j][]=f[i][j-][]+d[j]-d[i];
  49. fa[i][j][]=;
  50. }
  51. if (f[i][j][]>=t[j]||f[i][j][]>INF) f[i][j][]=INF;//没什么大不了的,防止溢出。
  52. }
  53. }
  54. int l,r,w;
  55. if (f[][n][]<INF)
  56. {
  57. printf("");
  58. l=,r=n,w=fa[][n][];
  59. }
  60. else if (f[][n][]<INF)
  61. {
  62. printf("%d",n);
  63. l=,r=n-,w=fa[][n][];
  64. }
  65. else
  66. {
  67. printf("Mission Impossible\n");
  68. continue;
  69. }
  70. while (l<=r)
  71. {
  72. if (w==)
  73. {
  74. printf(" %d",l);
  75. w=fa[l][r][],l++;
  76. }
  77. else
  78. {
  79. printf(" %d",r);
  80. w=fa[l][r][],r--;
  81. }
  82. }
  83. printf("\n");
  84. }
  85. }

ZOJ3541 The Last Puzzle的更多相关文章

  1. Puzzle 面向服务/切面(AOP/IOC)开发框架 For .Net

    Puzzle 面向服务/切面AOP开发框架 For .Net AOP主要实现的目的是针对业务处理过程中的切面进行提取,它所面对的是处理过程中的某个步骤或阶段,以获得逻辑过程中各部分之间低耦合性的隔离效 ...

  2. HDU5456 Matches Puzzle Game(DP)

    题目 Source http://acm.hdu.edu.cn/showproblem.php?pid=5456 Description As an exciting puzzle game for ...

  3. one recursive approach for 3, hdu 1016 (with an improved version) , permutations, N-Queens puzzle 分类: hdoj 2015-07-19 16:49 86人阅读 评论(0) 收藏

    one recursive approach to solve hdu 1016, list all permutations, solve N-Queens puzzle. reference: t ...

  4. poj3678 Katu Puzzle 2-SAT

    Katu Puzzle Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 6714   Accepted: 2472 Descr ...

  5. POJ1651Multiplication Puzzle[区间DP]

    Multiplication Puzzle Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 8737   Accepted:  ...

  6. codeforce B Island Puzzle

    B. Island Puzzle time limit per test 2 seconds memory limit per test 256 megabytes input standard in ...

  7. poj 1651 Multiplication Puzzle (区间dp)

    题目链接:http://poj.org/problem?id=1651 Description The multiplication puzzle is played with a row of ca ...

  8. Ignatius's puzzle

    Ignatius's puzzle Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others ...

  9. A hard puzzle

    A hard puzzle Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Tot ...

随机推荐

  1. [js高手之路]设计模式系列课程-设计一个模块化扩展功能(define)和使用(use)库

    模块化的诞生标志着javascript开发进入工业时代,近几年随着es6, require js( sea js ), node js崛起,特别是es6和node js自带模块加载功能,给大型程序开发 ...

  2. jmeter ---json几种读取方式,ArrayList循环读取

    在之前写过提取json数据格式的文章,这次对jmeter读取json数据格式进行整理. 举例一个接口的response 格式如下: { "data" : { "devic ...

  3. Javascript的内容摘要

    JS简介和变量 {JS的三种方式}            1 HTML中内嵌JS(不提倡使用)            <button onclick="javascript:alert ...

  4. input标签新增属性

    <input   list='list_t' type="text" name='user' placeholder='请输入姓名' value="" / ...

  5. 动态创建angular组件实现popup弹窗

    承接上文,本文将从一个基本的angular启动项目开始搭建一个具有基本功能.较通用.低耦合.可扩展的popup弹窗(脸红),主要分为以下几步: 基本项目结构搭建 弹窗服务 弹窗的引用对象 准备作为模板 ...

  6. 字符编码笔记:ASCII,Unicode和UT…

    字符编码笔记:ASCII,Unicode和UTF-8 今天中午,我突然想搞清楚Unicode和UTF-8之间的关系,于是就开始在网上查资料. 结果,这个问题比我想象的复杂,从午饭后一直看到晚上9点,才 ...

  7. 201521123015 《Java程序设计》第4周学习总结

    本周学习总结 1.1 尝试使用思维导图总结有关继承的知识点. 1.2 使用常规方法总结其他上课内容. 1.多态:使用单一接口操作多种类型的对象. 2.private修饰属性,public修饰方法. 3 ...

  8. 201521123101 《Java程序设计》第2周学习总结

    1. 本周学习总结 使用码云保存管理自己的代码: 学习String和Array: 继续对JAVA的探索,希望以后能在编程上更顺畅一些 2. 书面作业 1.使用Eclipse关联jdk源代码(截图),并 ...

  9. 201521123056 《Java程序设计》第12周学习总结

    1. 本周学习总结 2. 书面作业 将Student对象(属性:int id, String name,int age,double grade)写入文件student.data.从文件读出显示. 1 ...

  10. XML【介绍、用途、了解XML技术架构、语法】

    什么是XML? XML:extensiable markup language 被称作可扩展标记语言 XML简单的历史介绍: gml->sgml->html->xml gml(通用标 ...