当前位置: 首页 > news >正文

P3842 [TJOI2007] 线段

 

提供的代码使用动态规划来解决这个问题:

  1. ​数据结构​​:

    • a[]数组存储每行线段的左右端点

    • dp[]数组存储到达每行左右端点的最小路径长度

  2. ​核心函数sth()​:

    • 计算从上一行的某个位置到当前行某个位置的路径长度

    • pan参数决定是从左到右还是从右到左遍历当前行

  3. ​动态规划转移​​:

    • 对于每一行,计算从左端点和右端点出发的最短路径

    • 考虑两种遍历方式(从左到右或从右到左)

    • 使用min()函数选择更优的路径

  4. ​初始条件和边界处理​​:

    • 第一行的处理是特殊情况

    • 最后需要从最后一行到达(n,n)

算法优化建议

  1. ​空间优化​​:当前代码使用了O(n)的空间,可以进一步优化为只保存前一行的状态。

  2. ​预处理​​:可以预先计算某些重复使用的值,减少重复计算。

  3. ​更清晰的逻辑​​:可以将路径计算部分拆分为更小的函数,提高代码可读性。

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<iostream>
#include<bits/stdc++.h>
#define ll long long 
using namespace std;
struct {int l, r;
}a[20004], dp[20004];
int n;
ll sum = 0;
ll sth(int i, int k,bool pan) {if (pan == false) {if (k >= a[i].r) {return k - a[i].l + 1;}else if(k<=a[i].l) {return a[i].r - k + (a[i].r - a[i].l) + 1;}else {return (a[i].r - k) + a[i].r - a[i].l + 1;}}else {if (k >= a[i].r) {return (k - a[i].l) + (a[i].r - a[i].l) + 1;}else if (k <= a[i].l) {return a[i].r - k + 1;}else {return ( k- a[i].l) + a[i].r - a[i].l + 1;}}
}
int main(){ios::sync_with_stdio(false);        // 禁用同步cin.tie(nullptr);                   // 解除cin与cout绑定cin >> n;for (int i = 0; i < n; i++) {cin >> a[i].l >> a[i].r;}for (int i = 0; i < n; i++) {if (i == 0){dp[i].l = (a[i].r - 1) + (a[i].r - a[i].l);dp[i].r = a[i].r - 1;}else {dp[i].l = min((sth(i, a[i - 1].l, false) + dp[i - 1].l), (sth(i, a[i - 1].r, false) + dp[i - 1].r));dp[i].r = min((sth(i, a[i - 1].l, true) + dp[i - 1].l), (sth(i, a[i - 1].r, true) + dp[i - 1].r));}}cout << min(n - a[n - 1].l + dp[n - 1].l, n - a[n - 1].r + dp[n - 1].r);return 0;
}

http://www.lryc.cn/news/588653.html

相关文章:

  • 基于多智能体强化学习的医疗检索增强生成系统研究—MMOA-RAG架构设计与实现
  • 编程技能:多文件编译
  • c++图形题练习程序
  • LVS三种模式实战
  • 图机器学习(6)——图自编码器
  • 【电脑】显卡(GPU)的基础知识
  • 【轨物方案】当补贴退潮,光伏电站如何回归价值本质?
  • MySQL数据库----函数
  • 【PTA数据结构 | C语言版】二叉树前序序列化
  • 跨平台游戏引擎 Axmol-2.7.1 发布
  • git起步
  • 微信小程序翻书效果
  • 《汇编语言:基于X86处理器》第8章 高级过程(1)
  • 基于UDP/IP网络游戏加速高级拥塞控制算法(示意:一)
  • 力扣-使用双指针的方法的题们(持续更新中。。。
  • 一、CV_图像分类简介
  • Typecho插件开发:优化文章摘要处理短代码问题
  • 基于redis的分布式锁 lua脚本解决原子性
  • 银河麒麟服务器版挂载镜像文件
  • sqli-labs靶场通关笔记:第18-19关 HTTP头部注入
  • exe直接传输会导致文件损坏
  • 【html常见页面布局】
  • AI应用服务
  • Axios 完整功能介绍和完整示例演示
  • 分布式全局唯一ID生成:雪花算法 vs Redis Increment,怎么选?
  • gRPC实战指南:像国际快递一样调用跨语言服务 —— 解密Protocol Buffer与HTTP/2的完美结合
  • TCP可靠性设计的核心机制与底层逻辑
  • Java基础(八):封装、继承、多态与关键字this、super详解
  • Java全栈工程师面试实录:从电商系统到AIGC的层层递进
  • 通用综合文字识别联动 MES 系统:OCR 是数据流通的核心