博客
关于我
Codeforces Global Round 13
阅读量:406 次
发布时间:2019-03-05

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

为了解决这个问题,我们需要找到将所有点的值变为1所需的最少起跳次数。每次起跳会影响后续的点,具体来说,起跳点的值减少一次,并且起跳会影响后续点的跳跃次数。

方法思路

我们可以使用动态规划来解决这个问题。具体步骤如下:

  • 初始化数组:创建一个数组 b,其中 b[i] 表示点 i 被跳跃的次数。
  • 填充数组:遍历每个点 i,计算 b[i]。根据前点的跳跃次数和当前点的初始值,确保 b[i] 不超过当前点的初始值,并且不低于前点的跳跃次数加上某个值。
  • 累加结果:将所有点的跳跃次数累加,得到最少的起跳次数。
  • 解决代码

    #include 
    #include
    void solve() { int n; std::vector
    a(n + 1); std::vector
    b(n + 1); b[0] = 0; for (int i = 1; i <= n; ++i) { b[i] = std::max(b[i - 1], a[i] - (b[i - 1] - 1)); if (b[i] > a[i]) { b[i] = a[i]; } } int ans = 0; for (int i = 1; i <= n; ++i) { ans += b[i]; } std::cout << ans << '\n';}

    代码解释

  • 初始化:读取输入并初始化数组 ab
  • 动态规划填充:遍历每个点 i,计算 b[i]。使用 std::max 确保 b[i] 不低于前点的跳跃次数加上某个值,并使用 std::min 确保 b[i] 不超过当前点的初始值。
  • 计算结果:将所有点的跳跃次数累加,得到最少的起跳次数,并输出结果。
  • 这种方法确保了每个点的跳跃次数被合理计算,避免了不必要的跳跃,从而最小化了总的起跳次数。

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

    你可能感兴趣的文章
    PE知识复习之PE的导入表
    查看>>
    PGOS:今天动手给电脑装青苹果Win7 X64位系统
    查看>>
    PgSQL · 特性分析 · PG主备流复制机制
    查看>>
    phoenix连接hbase报错Can not resolve hadoop120, please check your network_记录026---大数据工作笔记0187
    查看>>
    PHP
    查看>>
    Regular Expression Notes
    查看>>
    PHP $FILES error码对应错误信息
    查看>>
    PHP $_FILES函数详解
    查看>>
    php &amp; 和 &amp;amp; (主要是url 问题)
    查看>>
    php -- 魔术方法 之 判断属性是否存在或为空:__isset()
    查看>>
    php -- 魔术方法 之 获取属性:__get()
    查看>>
    php -树-二叉树的实现
    查看>>
    PHP -算法-二路归并
    查看>>
    php aes sha1解密,PHP AES加密/解密
    查看>>
    php csv 导出
    查看>>
    PHP imap 远程命令执行漏洞复现(CVE-2018-19518)
    查看>>
    php include和require
    查看>>
    ref 和out 区别
    查看>>
    php JS 导出表格特殊处理
    查看>>
    php json dom解析
    查看>>