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或线段树写出.

  • 相关阅读:
    HDU5620 KK's Steel(C++语言版)
    HDU5620 KK's Steel(C语言版)
    大整数分解算法
    大整数分解算法
    HDU1319 POJ1595 UVA406 UVALive5490 ZOJ1312 Prime Cuts【素数筛选+打表】
    HDU1106 排序
    B00004 atoi函数
    B00004 atoi函数
    HDU1262 寻找素数对
    HDU1262 寻找素数对
  • 原文地址:https://www.cnblogs.com/hy-dgj/p/4886519.html
Copyright © 2011-2022 走看看