Codeforces-Round-826-Div-3-E-Sending-a-Sequence-Over-the-Network

news2025/1/15 17:47:42

title: Codeforces Round 826 (Div. 3) E. Sending a Sequence Over the Network
date: 2023-04-18 20:04:57
categories:

  • Algorithm
  • Codeforces
    tags:
  • codeforces
  • 动态规划
  • 1600

E. Sending a Sequence Over the Network

image-20230418200908805

image-20230418200924964

题目大意

给你一个长度为n的数组,问整个数组能不能满足如下条件:

  • 将数组a分成若干个序列(连续,完全覆盖,可以想象为切开)

  • 对于每个序列来说,它的长度被写在了左边或者右边,例如

    3 1 1 1 对于序列1 1 1来说,它的长度3写在了左边

    1 1 1 3 对于序列 1 1 1来说,它的长度3 写在了右边

    这两种都是符合题意的,可以写在左边也可以写在右边

  • 最后分成的序列能不能满足上面的条件

思路

动态规划:

状态表示:f[i]表示以第i个数结尾的前缀合法方案的集合

如果以第i个数结尾的集合是合法的记为1,不是记为0

状态计算:

  • 如果以第i个数结尾,这个数为a[i],先考虑它是左侧a[i]个数的长度,并且f[i-a[i]-1]即这a[i]+1个数之前的所有数必须要已经是合法方案了,那么以第i个数结尾的这个数才可以是一个合法方案。
  • 再考虑a[i]是右侧a[i]个数的长度,那么说明f[i-1]需要已经是一个合法方案了,这样右侧的a[i]+1个数才是合法的,即第a[i]+1个数之前都是合法的

状态转移方程:

  • 初始化f[i]=0,f[1]=1
  • if (i - a[i] >= 1 && f[i - a[i] - 1]) f[i] = 1;
  • if (i + a[i] <= n && f[i - 1]) f[i+a[i]]=1;

代码

#include <bits/stdc++.h>

#define int long long
using namespace std;

void solve() {
    int n;
    cin >> n;
    vector<int> a(n + 1);
    for (int i = 1; i <= n; i++) cin >> a[i];
    vector<int> f(n + 1);
    f[0] = 1;
    for (int i = 1; i <= n; i++) {
        if (i - a[i] >= 1 && f[i - a[i] - 1]) f[i] = 1;
        if (i + a[i] <= n && f[i - 1]) f[i+a[i]]=1;
    }
    cout << (f[n] ? "YES" : "NO") << endl;
}

signed main() {
#ifndef ONLINE_JUDGE
    freopen("../test.in", "r", stdin);
    freopen("../test.out", "w", stdout);
#endif
    int _;
    cin >> _;
    while (_--) solve();

    return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/491541.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Java 8 Time】Java8时区时间运用详解,2万字助你通关java.time包

目录 前言一、时区与时间1. 世界标准时&#xff1a;UTC、GMT、UT2. 地区时&#xff1a;Asia/Shanghai、UTC83. 时区&#xff1a;ZoneId、TimeZone4. 时间偏移量&#xff1a;ZoneOffset5. 时区简称&#xff1a;CTT、PRC 二、主要时间类1. 重要时间接口&#xff1a;Temporal2. 时…

测试用例覆盖不全面的解决方法

测试用例覆盖不全面的解决方法 问题分析 在测试用例设计过程中&#xff0c;容易出现思维受限或者需求盲区&#xff0c;我们不可能完全覆盖用户使用的所有场景&#xff0c;编写测试用例的时不可能把所有的场景都能想周全&#xff0c;把所有的场景下的情况都写成测试用例去模拟、…

SLAM论文速递:SLAM—— (2023)Amos-SLAM:一种基于视觉和几何的抗动态双阶段SLAM方法—5.05(1)

论文信息 题目&#xff1a; Amos-SLAM:An Anti-Dynamics Two-stage SLAM Approach Amos-SLAM:一种基于视觉和几何的抗动态双阶段SLAM方法论文地址&#xff1a; https://arxiv.org/pdf/2302.11747.pdf发表期刊&#xff1a; Computer Science > Robotics标签 xxxx 摘要 传统…

图神经网络:在KarateClub数据集上动手实现图神经网络

文章说明&#xff1a; 1)参考资料&#xff1a;PYG官方文档。超链。 2)博主水平不高&#xff0c;如有错误还望批评指正。 3)我在百度网盘上传了这篇文章的jupyter notebook。超链。提取码8888。 文章目录 文献阅读&#xff1a;代码实操&#xff1a; 文献阅读&#xff1a; 参考文…

基于ArkUI框架开发——图片模糊处理的实现

原文&#xff1a;基于ArkUI框架开发——图片模糊处理的实现&#xff0c;点击链接查看更多技术内容。 现在市面上有很多APP&#xff0c;都或多或少对图片有模糊上的设计&#xff0c;所以&#xff0c;图片模糊效果到底怎么实现的呢&#xff1f; 首先&#xff0c;我们来了解下模糊…

面向万物智联的应用框架的思考和探索(中)

原文&#xff1a;面向万物智联的应用框架的思考和探索&#xff08;中&#xff09;&#xff0c;点击链接查看更多技术内容。 应用框架&#xff0c;是操作系统连接开发者生态&#xff0c;实现用户体验的关键基础设施。其中&#xff0c;开发效率和运行体验是永恒的诉求&#xff0c…

【路径规划】基于麻雀搜索算法的栅格法路径规划 机器人路径规划【Matlab代码#21】

文章目录 1. 原始SSA算法2. 机器人路径规划环境创建3. 路径规划模型建立4. 部分代码展示5. 仿真结果展示6. 资源获取方式 1. 原始SSA算法 2. 机器人路径规划环境创建 对机器人工作空间的进行环境建模是机器人路径规划研究的重要前提。栅格法为环境建模提供了一种简洁有效的方法…

法规标准-GB/T 33577标准解读(2017版)

GB/T 33577是做什么的&#xff1f; GB/T 33577全名为智能交通系统-前方车辆碰撞预警系统(FVCWS)-性能要求和测试步骤&#xff0c;其中主要是对FVCWS系统的功能要求、性能要求及测试步骤进行了介绍。由于ISO 15623-2013内容与本法规内容相同&#xff0c;故可沿用此法规内容 FV…

【谷粒商城之消息队列RabbitMQ】

本笔记内容为尚硅谷谷粒商城消息队列RabbitMQ部分 目录 一、概述 二、简介 三、Docker安装RabbitMQ 四、Springboot整合RabbitMQ 1、引入spring-boot-starter-amqp 2、application.yml配置 3、测试RabbitMQ 1. AmqpAdmin-管理组件 2.RabbitTemplate-消息发送处理组件…

Wikidata实操

1. Wikidata 简介 Wikidata 即维基数据&#xff0c;是维基百科的一个项目。个项目已经在维基百科德国分部开始进行&#xff0c;项目完成之后&#xff0c;将会交给维基百科基金会进行操作和维护。&#xff08;具体百度即可&#xff0c;不多赘述&#xff09; 官网&#xff1a;htt…

操作系统考试复习—第三章 优先级倒置 死锁问题

当前OS广泛采用优先级调度算法和抢占方式&#xff0c;然而在系统中存在着影响进程运行的资源从而可能产生"优先级倒置"现象 具体解释为&#xff1a;在原本的调度算法设计中&#xff0c;高优先级进程可以抢占低优先级的CPU资源&#xff0c;先执行高优先级任务。但是存…

【STM32】在使用STM32Cube.IDE时更改时钟频率后代码跳进异常中断

目录 1、前言2、问题与复现办法3、解决的问题的过程 1、前言 这是在项目中无意发现的问题&#xff0c;其实有同样更复杂的工程可以运行&#xff0c;但是后来发现新建一个简单工程反而运行不了了&#xff0c;但是同样更复杂的工程可以运行说明本来同事原来已经不知道在哪里找到…

Vmware安装Kali

需要准备两个东西&#xff0c;kali镜像和VMware软件 下载kali iso 下载界面有三个可选择的 install是安装版&#xff0c;安装使用&#xff1b; Live版可以直接启动运行&#xff1b; netinstaller是网络安装&#xff0c;需要从网络上下载&#xff0c;文件本身只有引导作用&…

Idea Jrebel 报错:Cannot reactivate, offline seat in use ...

Idea Jrebel 报错&#xff1a;Cannot reactivate, offline seat in use ... 一、问题描述 在使用idea Jrebel续期的时候&#xff0c;修改idea激活服务器地址时&#xff0c;遇到报错&#xff1a;Cannot reactivate, offline seat in use. Click Work online in JRebel configura…

基于aspnet个人博客网站dzkf6606程序

系统使用Visual studio.net2010作为系统开发环境&#xff0c;并采用ASP.NET技术&#xff0c;使用C#语言&#xff0c;以SQL Server为后台数据库。 1&#xff0e;系统登录&#xff1a;系统登录是用户访问系统的路口&#xff0c;设计了系统登录界面&#xff0c;包括用户名、密码和…

探索卡尔曼滤波在位姿估计中的魅力:无人机与自动驾驶的关键技术揭秘

摘要&#xff1a;在本博客中&#xff0c;我们将探讨卡尔曼滤波在位姿估计领域的应用&#xff0c;特别是在无人机和自动驾驶场景中的重要性。我们将详细介绍卡尔曼滤波的原理、优势及其在无人机、自动驾驶等实际案例中的应用。此外&#xff0c;我们还将关注卡尔曼滤波在其他领域…

【服务器数据恢复】同友存储上的虚拟机数据恢复案例

服务器数据恢复环境&#xff1a; 同友存储&#xff0c;底层由数块物理硬盘组建的raid5磁盘阵列&#xff0c;存储池划分若干lun&#xff0c;每个lun下有数台虚拟机。 服务器故障&#xff1a; 未知原因导致存储崩溃&#xff0c;无法启动&#xff0c;虚拟机全部丢失&#xff0c;其…

linux中基础开发工具的使用

1.linux中的软件包管理器 1.1什么是软件包 在Linux下安装软件, 一个通常的办法是下载到程序的源代码, 并进行编译, 得到可执行程序.但是这样太麻烦了, 于是有些人把一些常用的软件提前编译好, 做成软件包(可以理解成windows上的安装程序)放在一个服务器上, 通过包管理器可以很…

软件管理员密码的作用 如何设置软件管理员密码?

在使用夏冰加密软件的过程中&#xff0c;很多软件都是可以设置软件管理员密码的。那么你知道管理员密码有什么用吗&#xff1f;又该如何设置软件管理员密码呢&#xff1f;下面我们来了解一下吧。 软件管理员密码是什么意思&#xff1f; 软件管理员密码就是软件的密码&#xff…

毕业5年,技术越来越好,混的却越来越差...

别人都是越来越好&#xff0c;而我是越来越差&#xff01; 17年&#xff0c;从一个普通的本科毕业&#xff0c;那个时候的我&#xff0c;很迷茫&#xff0c;简历上的求职岗位都不知道写什么&#xff0c;因为家里是农村的&#xff0c;朴实的父母也帮不上什么忙&#xff0c;关于…