首页 > 其他分享 >luogu P3842 [TJOI2007] 线段

luogu P3842 [TJOI2007] 线段

时间:2024-10-17 22:02:01浏览次数:1  
标签:P3842 luogu 线段 一行 abs TJOI2007 右侧 转移 dp

link
好题,考虑如何设定状态。
设\(dp_{i,0/1}\)表示到了第\(i\)行走完后停在这一行的最左侧/最右侧
设定\(l_i\)表示这一行该线段的最左侧,\(r_i\)表示这一行的最右侧。
思考如何转移。

1.当我处在这一行的最左侧时,我需要从这一行的右端点转移过来,所以你的贡献要加上这个线段的长度,你再考虑能从上一行的哪个位置再向下走一步能转移到这个线段的右侧,这个时候存在两个情况:

  • 上一行的位置在最左侧,那么这个时候你的移动距离肯定就是\(abs(l_{i-1}-r_i)\)。
  • 上一行的位置在最右侧,那么这个时候你的移动距离肯定就是\(abs(r_{i-1}-r_i)\)。

综上所述可以得到以下转移方程

\[dp_{i,0} = \min(dp_{i-1,0}+abs(l_{i-1}-r_i),dp_{i-1,1}+abs(r_{i-1}-r_i))+abs(r_i-l_i)+1 \]

右侧则同理,非常简单,也可以得到一个转移方程:

\[dp_{i,1} = \min(dp_{i-1,0}+abs(l_i-l_{i-1}),dp_{i-1,1}+abs(l_i-r_{i-1}))+abs(r_i-l_i)+1 \]

直接枚举每一行转移即可,答案就是\(\min(dp_{n,0}+n-l_n,dp_{n,1}+n-r_n)\)。因为你还要走到\((n,n)\)的这个位置。
那么初始值是什么呢?
对于第一行显然\(dp_{1,0} = r_1-l_1+r_1-1\),\(dp_{1,1} = r_1-l_1\),直接随便坐就可以了。

标签:P3842,luogu,线段,一行,abs,TJOI2007,右侧,转移,dp
From: https://www.cnblogs.com/grz0306/p/18473198

相关文章

  • luogu 模拟赛
    A.带余除法我们不难考虑找出\(q\)的上下界,不难发现范围是\([\lfloor\frac{n}{k+1}\rfloor+1,\lfloor\frac{n}{k}\rfloor]\)。当然这个区间可能为空。只需算出区间长度即可。B.奖牌排序不难考虑到分别按照三个关键字排序,然后对于每个小朋友找到每个关键字下的排名(同分取第一......
  • [lnsyoj2378/luoguAT_arc107_d]Number of Multisets
    题意给出两个正整数\(N,K\),求有多少有理数集满足以下所有条件集合有且只有\(N\)个元素,并且元素和为\(K\);每个元素须可表示为\( \frac{1}{2^{i}}\) $(i\inN)$.sol考虑dp,容易想到记\(f_{i,j}\)表示选\(i\)个数恰好和为\(j\)考虑到会出现诸如\(\dfrac{1}......
  • Luogu P5663 CSP-J2019 加工零件 题解 [ 绿 ] [ 同余最短路 ]
    加工零件:非常好的一道图论题。CCF普及组的题目大概也只有图论出的比较巧妙了。题意简述:给你一张无向图,\(q\)次询问,判断是否存在一条从\(a\)到\(1\)且长度为\(L\)的路径。看到\(L\)很大,我们立刻想到了要撇开\(L\)的限制思考问题。首先,对于一条路径,我们肯定能找到从......
  • 题解:Luogu CF548A Mike and Fax
    CF548AMikeandFax题解题面翻译给定一个字符串和一个整数\(k\),问是不是恰好存在\(k\)个子字符串是回文串,并且所有子字符串的长度一样长。题目上说有\(k\)个子字符串,我们就可以把字符串分成\(k\)份,如果分不成\(k\)份(也就是说长度不是\(k\)的倍数)的话,直接输出NO。......
  • [lnsyoj729/luoguP1450/HAOI2008]硬币购物
    题意给出一个长度为\(4\)的序列\(c\),给出\(n\)个询问,每个询问给出一个长度为\(4\)的序列\(d\)和整数\(s\),要求构造出长度为\(4\)的序列\(t\),使得\(s=\sum_{i=1}^4c_i\cdott_i\),且\(\forall(x\in\R)\land(1\lex\le4),t_x\led_x)\),求\(t\)的方......
  • [lnsyoj1015/luoguP1197/JSOI2008]星球大战starwar
    题意给出一个\(n\)个点,\(m\)条边的无向图,对其进行\(k\)次操作,每次操作会删除一个当前无向图中存在的点及其相邻的边,求原图和每次操作之后的图的连通块个数sol由于需要计算连通块个数,可以自然的想到使用并查集解决。然而,删除某个点后,我们无法通过并查集快速地得知其与其他......
  • Luogu_P10977(AcWing_299) Cut the Sequence 题解
    解题思路考虑线性dp。首先如果存在\(a_i>m\),那肯定不满足条件,输出\(-1\)。设\(f_i\)表示前\(i\)个数分成若干段,然后每段最大数之和,其中每段内的整数之和不超过\(m\)。\(f_i\)肯定是由\(f_j\)(\(1\lej<i\))转移过来的,也就是前\(j\)个数分好后再加上\((j,i]\)这一......
  • Luogu P10956 金字塔
    Solution考虑区间dp。很容易想到定义\(dp_{l,r}\)表示区间\([l,r]\)对应的满足条件的子树的方案数。一般区间dp的套路无非就是枚举一个断点\(k\),使得这个大状态由两个小状态转移过来,我们现在需要考虑的就是如何划分每一个状态。状态对应的子树也有若干个子树。不妨只考......
  • Luogu P6680
    题目描述给定一张\(N\)个点,\(M\)条边的无向简单图。如果存在\(1\lea<b<c\leN\)满足存在边\((a,b),(a,c)\),并且不存在\((b,c)\),则加入边\((b,c)\)。求最后的边数。思路首先我们可以把边看做从小的连向大的。通过观察可以发现只有在这种情况下才会建边:这里红色的......
  • luogu-P10596题解
    简要题意一个有\(N\)个元素的集合有\(2N\)个不同子集(包含空集),现在要在这\(2N\)个集合中取出若干集合(至少一个),使得它们的交集的元素个数为\(K\),求取法的方案数,答案模\(10^9+7\)。数据范围:\(1\leK\leN\le10^6\)。题解我们设\(f(i)\)表示选出子集大小恰好为\(i\)的......