洛谷 P3842 [TJOI2007]线段

题目传送门

f[i][1/0]表示到第i列左右端点的最短路程长度

复制代码
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>

using namespace std;

int n,l[20001],r[20001],f[20001][2];

inline int min(int a,int b) {
    if(a < b) return a;
    return b;
}

int main() {
    scanf("%d",&n);
    for(int i = 1;i <= n; i++)
        scanf("%d%d",&l[i],&r[i]);
    f[1][1] = r[1] - 1;
    f[1][0] = r[1] - 1 + r[1] - l[1];
    for(int i = 2;i <= n; i++) {
        int u = abs(r[i] - l[i]) + 1;
        f[i][1] = min(f[i-1][1] + abs(r[i-1] - l[i]),f[i-1][0] + abs(l[i-1] - l[i])) + u;
        f[i][0] = min(f[i-1][1] + abs(r[i-1] - r[i]),f[i-1][0] + abs(l[i-1] - r[i])) + u;
    }
    printf("%d",min(f[n][1] + abs(n - r[n]),f[n][0] + abs(n - l[n])));    
    return 0;
}
复制代码

 

posted @   Mr^Simon  阅读(104)  评论(0编辑  收藏  举报
编辑推荐:
· SQL Server 内存占用高分析
· .NET Core GC计划阶段(plan_phase)底层原理浅谈
· .NET开发智能桌面机器人:用.NET IoT库编写驱动控制两个屏幕
· 用纯.NET开发并制作一个智能桌面机器人:从.NET IoT入门开始
· 一个超经典 WinForm,WPF 卡死问题的终极反思
阅读排行:
· 支付宝事故这事儿,凭什么又是程序员背锅?有没有可能是这样的...
· 在线客服系统 QPS 突破 240/秒,连接数突破 4000,日请求数接近1000万次,.NET 多
· C# 开发工具Visual Studio 介绍
· 在 Windows 10 上实现免密码 SSH 登录
· C#中如何使用异步编程
点击右上角即可分享
微信分享提示