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

Codeforces Round 903 (Div. 3) E. Block Sequence

在这里插入图片描述

题解:

想到从后向前DP
f[i] 表示从 i ~ n 转化为“美观”所需要的最少的步骤

  • 第一种转移方式:直接删除掉第i个元素,那么就是上一步 f[i + 1] 加上 1;
  • 第二种转移方式:从第 i + a[i] + 1 个元素直接转移,不需要增加步数;

注意边界问题以及初始化,f[n + 1] = 0;

#include<bits/stdc++.h>

using namespace std;

#define int long long
#define debug(x) cerr << #x" = " << x << '\n';

typedef pair<int, int> PII;

const int N = 2e5 + 10;

int n;

void solve()
{
    cin >> n;
    vector<int> a(n + 1), f(n + 2);
    for (int i = 1; i <= n; i++) {
        cin >> a[i];
    }
    
    f[n + 1] = 0;
    for (int i = n; i >= 1; i--) {
        f[i] = f[i + 1] + 1;
        if(i + a[i] <= n) {
            f[i] = min(f[i], f[i + a[i] + 1]);
        }
    }
    cout << f[1] << endl;
}

signed main()
{
    cin.tie(0);
    ios::sync_with_stdio(false);
    int T = 1;
    cin >> T;
    while (T --) solve();
    return 0;
}

http://www.kler.cn/a/513790.html

相关文章:

  • 第五篇 vue3 ref 与 reactive 对比
  • C++语言的文件操作
  • OneFlow的简单介绍
  • 基于vite+vue3+mapbox-gl从零搭建一个项目
  • 简述mysql 主从复制原理及其工作过程,配置一主两从并验证。
  • elasticsearch基础
  • PySpark之金融数据分析(Spark RDD、SQL练习题)
  • 【leetcode 24】151.翻转字符串里的单词==❗没看懂❗==
  • 【Vim Masterclass 笔记24】S10L43 + L44:同步练习10 —— 基于 Vim 缓冲区的各类基础操作练习(含点评课)
  • Mysql基于gtid的主从同步配置实验
  • 优雅解决webview_flutter不支持安卓选择图片视频文件问题
  • 电梯系统的UML文档08
  • 微服务学习-Sentinel 限流保护服务
  • LLaMA Factory框架微调GLM-4大模型
  • Java线程池ThreadPoolExecutor封装工具类
  • 两份PDF文档,如何比对差异,快速定位不同之处?
  • npm install安装缓慢或卡住不动
  • 【整体介绍】
  • 有了TiDB,是否还需要“散装”大数据组件?
  • 利用开源AI智能名片2+1链动模式S2B2C商城小程序满足用户的自恋心理
  • 亚博microros小车-原生ubuntu支持系列:5-姿态检测
  • Linux——信号量和(环形队列消费者模型)
  • [春秋杯冬季赛2025] pwn复现
  • 基于微信小程序的健身房预约管理系统
  • MySQL面试题2025 每日20道【其四】
  • 【0x04】HCI_Connection_Request事件详解