博客
关于我
Making the Grade [POJ3666] [DP]
阅读量:800 次
发布时间:2023-02-06

本文共 1428 字,大约阅读时间需要 4 分钟。

为了解决这个问题,我们需要将给定的序列转换为单调不增或单调不减序列,并以最小代价完成转换。代价定义为所有元素调整后的值与原值的差的绝对值之和。我们可以使用动态规划来解决这个问题。

方法思路

  • 问题分析:我们需要将序列转换为单调序列,选择递增或递减中的代价更小的方式。动态规划是一个有效的方法来解决这种问题。
  • 离散化处理:由于序列中的数字可能很大,我们对序列进行排序并离散化处理,以减少计算复杂度。
  • 状态定义:定义 dp[i][j] 为处理到第 i 个元素,当前元素为 j(离散化后的值)时的最小代价。
  • 状态转移:对于每个元素 i,我们遍历所有可能的值 j,并记录前一步的最小代价 mn,然后更新当前状态的代价。
  • 优化处理:在每一步中,记录最小值 mn 以避免重复计算,从而优化时间复杂度。
  • 解决代码

    #include 
    #include
    #include
    #include
    #include
    #include
    #include
    #include
    #include
    #define RG register ll#define rep(i, a, b) for (RG i = a; i <= b; ++i)#define per(i, a, b) for (RG i = a; i >= b; --i)#define ll long long#define inf (1 << 30)#define maxn 2000using namespace std;ll n;ll h[maxn], b[maxn];ll dp[maxn][maxn];inline ll read() { ll x = 0, f = 1; char c = getchar(); while (c < '0' || c > '9') { if (c == '-') f = -1; c = getchar(); } while (c >= '0' && c <= '9') { x = x * 10 + (c - '0'); c = getchar(); } return x * f;}void work() { rep(i, 1, n) { ll mn = inf; rep(j, 1, n) { mn = min(mn, dp[i-1][j]); ll cost = (h[i] >= b[j]) ? h[i] - b[j] : b[j] - h[i]; dp[i][j] = mn + cost; } }}ll ans = inf;rep(i, 1, n) { ans = min(ans, dp[n][i]);}cout << ans << endl;

    代码解释

  • 读取输入:使用 read 函数读取输入数据,处理序列长度和序列元素。
  • 排序离散化:将序列 h 排序并存储在数组 b 中。
  • 动态规划初始化:初始化 dp 数组,dp[0][j] 设为 0。
  • 动态规划处理:对于每个元素 i,遍历所有可能的值 j,记录前一步的最小值 mn,并更新当前状态的代价。
  • 计算最小代价:遍历所有可能的值 j,找到最小的代价 ans 并输出。
  • 这种方法通过离散化和动态规划优化,确保了在合理的时间复杂度内解决问题,适用于较大的输入规模。

    转载地址:http://ieufk.baihongyu.com/

    你可能感兴趣的文章
    Nginx代理配置详解
    查看>>
    Nginx代理静态资源(gis瓦片图片)实现非固定ip的url适配网络环境映射ip下的资源请求解决方案
    查看>>
    Nginx代理静态资源(gis瓦片图片)实现非固定ip的url适配网络环境映射ip下的资源请求解决方案
    查看>>
    nginx反向代理
    查看>>
    nginx反向代理、文件批量改名及统计ip访问量等精髓总结
    查看>>
    Nginx反向代理与正向代理配置
    查看>>
    Nginx反向代理及负载均衡实现过程部署
    查看>>
    Nginx反向代理是什么意思?如何配置Nginx反向代理?
    查看>>
    nginx反向代理解决跨域问题,使本地调试更方便
    查看>>
    Nginx反向代理配置
    查看>>
    Nginx启动SSL功能,并进行功能优化,你看这个就足够了
    查看>>
    nginx启动脚本
    查看>>
    Nginx在Windows上和Linux上(Docker启动)分别配置基本身份认证示例
    查看>>
    Nginx在Windows下载安装启动与配置前后端请求代理
    查看>>
    Nginx多域名,多证书,多服务配置,实用版
    查看>>
    nginx如何实现图片防盗链
    查看>>
    Nginx学习总结(13)——Nginx 重要知识点回顾
    查看>>
    Nginx学习总结(14)——Nginx配置参数详细说明与整理
    查看>>
    nginx学习笔记002---Nginx代理配置_案例1_实现了对前端代码的方向代理_并且配置了后端api接口的访问地址
    查看>>
    Nginx安装与常见命令
    查看>>