luogu [TJOI2007]线段
题目链接
题解
dp[i][0/1]第i行在左/右端点的最短路
瞎转移
代码
#include<bits/stdc++.h>
using namespace std;
inline int read()  {
    int x= 0 ,f = 1;
    char c = getchar();
    while(c < '0' || c > '9')c = getchar();
    while(c <= '9' &&c >= '0')x = x * 10 + c - '0',c = getchar();
    return x * f;
}
const int maxn = 500007;
int n;
int l[maxn],r[maxn],dp[maxn][2];
int main() {
    n = read();
    for(int i = 1;i <= n;++ i)   l[i] = read(),r[i] = read();
    dp[1][0] = r[1] + r[1] - l[1] - 1;
    dp[1][1] = r[1] - 1;
    for(int i = 2;i <= n;++ i) {
    	int x = dp[i - 1][0],y = dp[i - 1][1];
       	dp[i][0] = min(x + abs(l[i-1] - r[i]) + r[i] - l[i] + 1, y + abs(r[i-1] - r[i]) + r[i] - l[i] + 1);
       	dp[i][1] = min(x + abs(l[i-1] - l[i]) + r[i] - l[i] + 1, y + abs(r[i-1] - l[i]) + r[i] - l[i] + 1);
    }
    printf("%d\n",min(dp[n][0] + n - l[n], dp[n][1] + n - r[n]));
    return 0;
}
												
											luogu [TJOI2007]线段的更多相关文章
- 【luogu P3372 线段树1】 模板
		
线段树的模板题 题目链接:https://www.luogu.org/problemnew/show/P3372 update区间修改,query区间求和 #include <iostream& ...
 - luogu 3582 线段树
		
线段树内存下mx[k]的值是动态的1-i这个区间的贡献答案 实际上点存的就是区间答案,但用max是为了求最大区间答案(有可能虽然贡献被消除但后来有更大的贡献填补答案空缺) #include<bi ...
 - [TJOI2007] 线段
		
因为每行必须走完才能到下一行,所以我们有两种决策: 1.最后留在线段左端点 2.最后留在线段右端点 这种存在状态转移且多决策的问题用动态规划来进行递推是最好不过的了. 所以我们设\(dp[i][0/1 ...
 - 【luogu P3373 线段树2】 模板
		
题目链接:https://www.luogu.org/problemnew/show/P3373 lazy标记两个,先乘后加 #include <iostream> #include &l ...
 - 【洛谷 P3842】[TJOI2007]线段(DP)
		
裸DP.感觉楼下的好复杂,我来补充一个易懂的题解. f[i][0]表示走完第i行且停在第i行的左端点最少用的步数 f[i][1]同理,停在右端点的最少步数. 那么转移就很简单了,走完当前行且停到左端点 ...
 - [洛谷Luogu]P1803 线段覆盖问题
		
贪心想法题解的各位dalaodalaodalao都讲得很清楚了,在下就提供一种桶排的做法吧. 因为给出数据范围 0≤ai<bi≤10000000≤ai<bi≤10000000≤ai< ...
 - P3842 [TJOI2007]线段
		
最近多刷些dp,觉得这个算不上蓝题 在一个\(n\times n\)的平面上,在每一行中有一条线段,第\(i\)行的线段的左端点是\((i, L_i)\),右端点是\((i, R_i)\),其中\ ...
 - [TJOI2007] 线段 (动态规划)
		
题目链接 Solution 传统的线性 \(dp\) . \(f[i][0]\),\(f[i][1]\) 分别表示最后一次在 \(i\) ,然后在 左边或者右边的最小步数. 然后就每次根据上一次左边和 ...
 - [线段树]Luogu P3372 线段树 1【模板】
		
#include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #d ...
 
随机推荐
- SpringMVC关于ajax提交400错误(后台获取为null)
			
400错误有三种情况 1:请求的数据量过大,不过这种情况一般很少见. 2:请求的data参数有误,确保每一个参数都能请求到. 注释:之前小白出现400错误,后台获取参数为null是因为第三种情况,经过 ...
 - 阿里云(一)云存储OSS的命令行osscmd的安装和使用
			
一.安装Python 在Linux Shell里验证Python版本: $ python -V Python 2.7.10 二.安装OSScmd SDK osscmd是基于python 2.5.4(其 ...
 - iOS数据库操作之coredata详细操作步骤
			
CHENYILONG Blog iOS数据库操作之coredata详细操作步骤 技术博客http://www.cnblogs.com/ChenYilong/ 新浪微博http://weibo.com/ ...
 - 【洛谷 P2726】 [SHOI2005]树的双中心(树的重心)
			
先考虑一个\(O(N^2)\)做法. 设选的两个点为\(x,y\),则一定可以将树分成两个集合\(A,B\),使得\(A\)集合所有点都去\(x\),\(B\)集合所有点都去\(y\),而这两个集合的 ...
 - Sortable.js
			
拖拽的时候主要由这几个事件完成, ondragstart 事件:当拖拽元素开始被拖拽的时候触发的事件,此事件作用在被拖曳元素上 ondragenter 事件:当拖曳元素进入目标元素的时候触发的事件,此 ...
 - asp.net(c#)中相对路径(虚拟路径)和物理磁盘路径的转换
			
物理路径:磁盘路径,也就是在磁盘上的位置. 虚拟路径:web页面上的路径,是相对于应用程序而言的. /// 将物理路径转换成相对路径 /// </summary> ...
 - Linux释放内存小脚本
			
最近发现渣渣ECS内存总是不够用,内存太小一不小心就用完了,用完就用完吧,内存用来做cache是可以快一些,但是内存用完了老是一顿一顿的卡,实在有点受不了,于是就写了释放内存的小脚本,觉得卡了就释放下 ...
 - MDP安装之数据库
			
/usr/bin/mysqladmin -u root password 'Bic2017' mysql-community-client-5.6.28-2.el6.x86_64 mysql-comm ...
 - Linux内存管理 【转】
			
转自:http://blog.chinaunix.net/uid-25909619-id-4491368.html Linux内存管理 摘要:本章首先以应用程序开发者的角度审视Linux的进程内存管理 ...
 - ZJOI2019爆蛋记
			
Day-2 玩了一个下午,逛了填海校园,晚上吃肯德基 Day-1 上午听lyx巨佬讲课,讲到一半发现,越听越听不懂... 于是打开电脑开始刷知乎 下午听kcz孔爷讲课,emmmm电脑被我玩没电了... ...