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\),直接随便坐就可以了。

luogu P3842 [TJOI2007] 线段的更多相关文章

  1. P3842 [TJOI2007]线段

    最近多刷些dp,觉得这个算不上蓝题   在一个\(n\times n\)的平面上,在每一行中有一条线段,第\(i\)行的线段的左端点是\((i, L_i)\),右端点是\((i, R_i)\),其中\ ...

  2. luogu [TJOI2007]线段

    题目链接 luogu [TJOI2007]线段 题解 dp[i][0/1]第i行在左/右端点的最短路 瞎转移 代码 #include<bits/stdc++.h> using namesp ...

  3. 【洛谷 P3842】[TJOI2007]线段(DP)

    裸DP.感觉楼下的好复杂,我来补充一个易懂的题解. f[i][0]表示走完第i行且停在第i行的左端点最少用的步数 f[i][1]同理,停在右端点的最少步数. 那么转移就很简单了,走完当前行且停到左端点 ...

  4. [Luogu] 可持久化线段树 1(主席树)

    https://www.luogu.org/problemnew/show/P3834 #include<cstdio> #include<iostream> #include ...

  5. Luogu P5280 [ZJOI2019]线段树

    送我退役的神题,但不得不说是ZJOIDay1最可做的一题了 先说一下考场的ZZ想法以及出来后YY的优化版吧 首先发现每次操作其实就是统计出增加的节点个数(原来的不会消失) 所以我们只要统计出线段树上每 ...

  6. luogu 1712 区间(线段树+尺取法)

    题意:给出n个区间,求选择一些区间,使得一个点被覆盖的次数超过m次,最小的花费.花费指的是选择的区间中最大长度减去最小长度. 坐标值这么大,n比较小,显然需要离散化,需要一个技巧,把区间转化为半开半闭 ...

  7. [TJOI2007] 线段

    因为每行必须走完才能到下一行,所以我们有两种决策: 1.最后留在线段左端点 2.最后留在线段右端点 这种存在状态转移且多决策的问题用动态规划来进行递推是最好不过的了. 所以我们设\(dp[i][0/1 ...

  8. Luogu P3960 列队 线段树

    题面 线段树入门题. 我们考虑线段树来维护这个矩阵. 首先我们先定n+1棵线段树前n棵维护每行前m-1个同学中没有离队过的同学,还有一棵维护第m列中没有离队过的同学.再定n+1棵线段树前n棵线段树维护 ...

  9. Luogu P1471 方差 线段树

    那是上上周...也是重构了四遍...后来GG了...今天又拾起,搞了搞终于过了... 好吧就是个线段树,公式懒得推了https://www.cnblogs.com/Jackpei/p/10693561 ...

  10. 解题报告:luogu P3853 [TJOI2007]路标设置

    题目链接:P3853 [TJOI2007]路标设置 是个水二分,那你还\(WA\).很简单,就是练了练和早上那题相似的题. 二分答案即可,复杂度\(O(Nlogl)\),可以通过本题. 不过,需要注意 ...

随机推荐

  1. [学习笔记] 树链剖分(重链剖分) - 图论 & 数据结构

    树链剖分 树链剖分,用于解决一系列的树中链上问题的算法(数据结构).其实对于树链修改和树链求和问题可以使用更加方便的树上差分解决,但是对于像求树链最大(小)权值之类的更复杂的问题,差分就显得不够用了. ...

  2. 9组-Alpha冲刺-总结

    一.基本情况 1.1基本情况(10分): 组长博客链接:https://www.cnblogs.com/Microsoft-hc/p/15585517.html 1.2现场答辩总结 PPT上缺少了组内 ...

  3. SMU 2024 spring 天梯赛自主训练1

    SMU 2024 spring 天梯赛自主训练1 7-1 宇宙无敌大招呼 - SMU 2024 spring 天梯赛自主训练1 (pintia.cn) #include <bits/stdc++ ...

  4. Namomo Summer Camp 23 Day 1(GCPC2021)

    Namomo Summer Camp 23 Day 1(GCPC2021) Problem B: Brexiting and Brentering 签到 #include<bits/stdc++ ...

  5. C语言实现url解析小实例

    一.前言 前面一口君写了一篇关于url的文章: <一文带你理解URI 和 URL 有什么区别?> 本篇在此基础上,编写一个简单的用于解析url的小例子, 最终目标是解析出URL中所有的数据 ...

  6. Buckingham-Reiner 方程和 Darby-Melson 经验方程

    由 Roni, et al. (2018), Woolley, et al. (2014), Yang, et al. (2017) 整理人便便的物理性质数据如下: 性质 值 密度 \((\text{ ...

  7. MySQL中的char与varchar

    MySQL中的char与varchar char类型为固定长度的字符串 varchar类型是长度可变的字符串 char为固定长度的字符串意思是当我们设置一个字段类型为char时,指定char(100) ...

  8. Axure 0基础实战入门 模拟一个app页面

    Axure 0基础实战入门 模拟一个app页面 第一次接触axure9,尝试模拟一个app页面与交互 页面原型 我选择了一个免费的日程app,下载rp文件后导入到axure 模拟实现登录页面 新建两个 ...

  9. maven 插件之 maven-shade-plugin,解决同包同名 class 共存问题的神器

    开心一刻 有一天螃蟹出门,不小心撞倒了泥鳅泥鳅很生气地说:你是不是瞎啊!螃蟹说:不是啊,我是螃蟹 概述 maven-shade-plugin 官网已经介绍的很详细了,我给大家简单翻译一下 This p ...

  10. 机器学习--决策树算法(CART)

    CART分类树算法 特征选择 ​ 我们知道,在ID3算法中我们使用了信息增益来选择特征,信息增益大的优先选择.在C4.5算法中,采用了信息增益比来选择特征,以减少信息增益容易选择特征值多的特征的问题. ...