首页 > 其他分享 >「NOIP2012」开车旅行

「NOIP2012」开车旅行

时间:2022-12-14 21:23:14浏览次数:87  
标签:旅行 路程 NOIP2012 行驶 目的地 开车 dp

「NOIP2012」开车旅行

题面描述:

小\(A\)与小\(B\)开车旅行,两个点的距离是两个点的高度的差的绝对值,若两个点的距离相同,则认为海拔低的要更近,小\(A\)以离他次近的点作为目的地,小B以离他最近的点作为目的地,小\(A\)与小\(B\)轮流开车,若行驶距离超过或没有目的地则停止旅行.
回答两个问题:

1.给定\(x\),求那个点出发会使\(A\)开车行驶的路程:\(B\)开车行驶的路程最小。

2.对于一个出发点与给定的\(x\),求\(A\)开车行驶的路程与\(B\)开车行驶的路程。

题解:

可以用\(set\)或链表求出小\(A\)与小\(B\)在每一个点到达的目的地,对于这两个问题,其实得到的都是以下模型:

一个点走\(n\)步的路程

可以利用倍增求\(lca\)的思想,令\(dp[i][k]\)表示\(i\)走\(2^k\)步后到达的目的地,\(f[i][k]\)表示到\(dp[i][k]\)所要的路程。

但是这道题要求两个人的行驶路程,我们就令\(f[i][k][0/1]\)表示第0/1个人所行驶的路程。

由于小A与小B轮流开车,可以dp最开始是谁开车,令\(dp[i][k][0/1]\)表示第0/1个人最开始开车,所到达的目的地,\(f[i][k][0/1][0/1]\)表示第0/1个人最开始开车,第0/1个人所行驶的路程。

当\(k=1\)时:

\(dp[i][k][0]=dp[dp[i][k-1][0]][k-1][1]\)

\(f[i][k][0][0]=f[i][k-1][0][0]+f[dp[i][k-1][0]][1][0]=f[i][k-1][0][0]\)

\(f[i][k][0][1]=f[i][k-1][0][1]+f[dp[i][k-1][0]][1][1]=f[dp[i][k-1][0]][1][1]\)

\(dp[i][k][1],f[i][k][1][0],f[i][k][1][1]\)则同理.

当\(k!=1\)时:

\(dp[i][k][0]=dp[dp[i][k-1][0]][k-1][0]\)

\(f[i][k][0][0]=f[i][k-1][0][0]+f[dp[i][k-1][0]][k-1][0][0]\)

\(dp[i][k][1],f[i][k][1][0],f[i][k][1][1],f[i][k][0][1]\)则同理.

可以发现,第一个人\("B"\)在\(k>=1\)时不会对答案产生贡献,则这一些状态可以舍弃.

预处理完\(dp\)数组后可以类似\(lca\)的统计答案

标签:旅行,路程,NOIP2012,行驶,目的地,开车,dp
From: https://www.cnblogs.com/zhouhuanyi/p/16983570.html

相关文章

  • [JSOI2013]旅行时的困惑
    链接:https://www.luogu.com.cn/problem/P5258题目描述:给定一颗有向树,求至少多少条有向路径可以覆盖整颗树(有向路径可以相交)题解:路径的覆盖,我们容易想到赛道修建那样......
  • [JSOI2010]旅行
    链接:https://www.luogu.com.cn/problem/P6029题目描述:给定一个$n$个$m$条边的无向图,可以交换$k$组边,求$1$到$n$的最短路。题解:发现值域都比较小,考虑$dp$。我们可以......
  • python奇妙旅行之4行代码生成图像验证码
    在学习的路上,永无止境。就好比人掉进"深渊",永远无法自拔!  ~ ~!我没有开车,我没有开车~~~今天空闲时间再看某大佬得论坛,被点了一下,就想起来了2种方法,生成图片验证码,简约......
  • 2022 最新海南岛旅行攻略 All In One
    2022最新海南岛旅行攻略AllInOne海南岛面积约3.54万平方公里,人口约940多万。人口GDPhttps://www.hainan.gov.cn/hainan/zfsj/xsj.shtmlhttps://www.hainan.......
  • 1088. 旅行问题
    题目链接1088.旅行问题John打算驾驶一辆汽车周游一个环形公路。公路上总共有\(n\)个车站,每站都有若干升汽油(有的站可能油量为零),每升油可以让汽车行驶一千米。John......
  • 旅行二
      ★实验任务王尼玛又想出去旅游了,由于王尼玛是个抠门的人,所以王尼玛想要花最少的钱去一个自己想去的地方。王尼玛决定使用火车去旅行,地图上总共有n个城市,其中有k个......
  • java最容易理解的旅行售货员问题
    packageNqueen;publicclasszuiduanluxian{/***旅行售货员问题--回溯法*@authorLican**/publicstaticclassBttsp{//建立一个javabean类而且是......
  • P8855 [POI2002]商务旅行
    简要题意给出一个\(N\)个节点的树和一个长度为\(M\)的序列\(S\)。你需要从\(1\)出发,依次经过\(S\)中的所有点,求至少需要经过的边数。\(1\leN\le30000\)思......
  • 【路径规划】基于遗传算法求解固定的开放式多旅行推销员问题(M-TSP)附matlab代码
    ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进。......
  • MFC-QT校园导航系统(旅行商TSP算法)
    MFC-QT校园导航系统(旅行商TSP算法)[问题描述]旅行商问题,给定若干城市和城市间距离,求解访问每一座城市一次并回到起始城市的最短回路。想象一个校园场景:某同学从宿舍出发......