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

P3842 [TJOI2007]线段

时间:2022-10-11 08:33:26浏览次数:85  
标签:P3842 int 线段 一行 端点 TJOI2007

P3842

 每一行走完该行的线段后才能向下一行移动,那么显然可以按行数为阶段进行DP,发现每一行停止的位置不是在左端点就是在右端点,所以设f[i][0\1]表示走完第i行的线段最终停在左/右端点的最短路程, 从该行的左/右端点向下一行的左右端点转移即可,模拟一下可以得到转移方程。 

代码如下:

 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 const int N = 20010;
 4 int n, l[N], r[N], f[N][2];
 5 int main() {
 6     cin >> n;
 7     for (int i = 1; i <= n; i ++) cin >> l[i] >> r[i];
 8     f[1][0] = r[1] - 1 + r[1] - l[1];
 9     f[1][1] = r[1] - 1;
10     for (int i = 2; i <= n; i ++) {
11         f[i][0] = min(f[i - 1][0] + abs(r[i] - l[i - 1]) + r[i] - l[i] + 1, f[i - 1][1] + abs(r[i - 1] - r[i]) + r[i] - l[i] + 1);
12         f[i][1] = min(f[i - 1][0] + abs(l[i - 1] - l[i]) + r[i] - l[i] + 1, f[i - 1][1] + abs(r[i - 1] - l[i]) + r[i] - l[i] + 1);
13     }
14     printf("%d\n", min(f[n][0] + n - l[n], f[n][1] + n - r[n]));
15     return 0;
16 }

 

标签:P3842,int,线段,一行,端点,TJOI2007
From: https://www.cnblogs.com/YHxo/p/16778013.html

相关文章

  • 李超线段树
    李超线段树维护很多个线段/直线,查询和某条$x=k$的直线的交点的纵坐标最大值线段树上每个节点维护的是,在中点$mid$处取最大值的线段,称它为这个区间的优势线段,但......
  • HDU 1698 Just a Hook(线段树)
    题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=1698思路:updata()区间替换,query()区间求和先上3篇博客1:http://blog.sina.com.cn/s/blog_a2dce6b30101l8bi.html 2:ht......
  • P3919 【模板】可持久化线段树 1(可持久化数组)
    还是用主席树来做(因为提到不同的版本),这时候的主席树不是以权值为下标的,就是普通的线段树,维护范围1~n,i存的是a[]中的数。1#include<bits/stdc++.h>2usingnamespac......
  • 线段树
    线段树线段树是一个很优秀的树结构,较简单,功能多,可以维护复杂信息。可以动态开点,可以打懒标记。基本概念线段树是基于分治思想的二叉树。为了引入线段树,我们来看一个......
  • 2022.10.3线段树复习笔记(未完待续)
    线段树原理及存储:如图,1即为根节点,存储着[1,5]的整个区间和,‘1’为左边界,‘5’为右边界,所以此节点表示的是[1,5]这个区间。线段树的每个节点向下二分,左儿子的编号为此节......
  • 线段树精选题
    SP2713GSS4-CanyouanswerthesequeriesIV题目大意\(n\)个数,和在\(10^18\)范围内,两种操作:区间开方下取整,查询区间和。思路区间开方,其实也是区间修改,只是每个元......
  • P3834 【模板】可持久化线段树 2
    P3834主席树模板,求区间第k小。1#include<bits/stdc++.h>2usingnamespacestd;3#definelctr[i].ch[0]4#definerctr[i].ch[1]5#defineLctr[j].ch[0......
  • 动态开点线段树
    引入在普通的线段树中,我们一般要开\(4N\)的数组以避免越界。然而,在一些题目中,空间限制并不允许我们这样做。考虑如下问题:有一个长度为\(n\)的数组,初始全部为\(0\)......
  • 李超线段树 学习笔记
    Idea主要用于动态维护一个线段或直线集合,支持在平面直角坐标系中插入一条线段或者直线,以及查询某一横坐标上的最值。考虑在x轴上建立一棵线段树,每一个节点\([l,r]\)......
  • 探求|线段或棱上是否存在一个点
    ......