zoukankan      html  css  js  c++  java
  • 关于10月16日模拟赛的心得与感悟

    终于写到今天了...

    第一题:纯水题,送分.模拟即可

    第二题:最短路径. 大概题意是给出两个点的编号和n个点的坐标.要求每个点经过一次,0点允许经过两次.其中有三个限制条件:

    1.从A走到B时,只能由横坐标小的点走到大的点.
    2.由B回到A时,只能由横坐标大的点走到小的点.
    3.有两个特殊点b1和b2,b1在0到n-1的路上,b2在n-1到0的路上.

    可以运用动规的思想,定义dp[i][j].表示了第一条线路最前端为i , 第二条线路最前端为j 的最小路径长度.

    每次更新时,取出 k = max( i , j ) + 1.而后更新下一次状态

    dp[i][k] = min ( dp[i][k] , dp[i][j] + dis( j , k ) )

    dp[k][j] = min ( dp[i][k] , dp[i][j] + dis( i , k ) )

    其中必须走过的点和终点要特判,当走到只能单向通行的点的时候只能从其中一种状态转移.当走到终点时,由于k = max( j , j ) + 1,所以不会更新dp[n-1][n-1],而是会更新到下一层dp[n-1][n] 和dp[n][n-1].

    第三题:停车的问题,每次要使停的车放在与其他车距离最小值最大.可以用Treap或线段树写出.

  • 相关阅读:
    DS博客作业01--日期抽象数据类型设计与实现
    C语言-第6次作业
    C语言-第5次作业
    C语言--第4次作业
    DS博客作业08--课程总结
    DS博客作业07--查找
    DS博客作业06--图
    DS博客作业05--树
    DS博客作业03--栈和队列
    DS作业01--日期抽象数据类型设计与实现
  • 原文地址:https://www.cnblogs.com/hy-dgj/p/4886519.html
Copyright © 2011-2022 走看看