A Twisty Movement

news/2025/9/27 16:54:44/文章来源:https://www.cnblogs.com/wuzihe/p/19115305

CF933A A Twisty Movement

简化题目

给定一个有 \(1\)\(2\) 两个数字组成的数组中,选择一个子串,将 \(1\) 变成 \(2\),将 \(2\) 变成 \(1\),求出变化后的序列的最长上升子序列。

思路

简单的情况

如果没有变换操作,题目就变成了一个简单的最长上升子序列问题,答案一定为

\[[1...1][2...2] \]

这种形式,设 \(f[i][1/2]\) 表示前 \(i\) 个数中,以 \(1\)\(2\) 这两个数字结尾的最长上升子序列。

转移为

\[f[i][1] = f[i-1][1] + (a[i] == 1) \]

\[f[i][2] = \max(f[i][1], f[i-1][2] + (a[i] == 2)) \]

题目转换

再考虑题目中的变换操作,可以知道这次的操作一定会对答案造成一定的变化,要不然这次的转换一定是无用的,不优的,考虑怎么翻转至 \([1...1][2...2]\) 这种状态。

  1. \([1...1]\) 这个区间内翻转,有 \([2...2][1...1][2...2]\) 这种情况,\([1...1]\) 长度可能为零
  2. \([2...2]\) 这个区间内翻转,有 \([1...1][2...2][1...1]\) 这种情况,\([2...2]\) 长度可能为零
  3. \([1...1][2...2]\) 中间翻转,先将 \([1...1][2...2]\) 划分成 \([1...1][1...1][2...2][2...2]\),再将中间的 \([1...1][2...2]\) 翻转成 \([2...2][1...1]\),变成了 \([1...1][2...2][1...1][2...2]\) 这种情况,其中中间的 \([2...2][1...1]\) 长度可能为零

由于长度都有可能为零,将这三种情况合并成一种,用 $$[1...1][2...2][1...1][2...2]$$ 表示,其中每一段都可以为空。

现在就可以 dp 了。

  • 状态:
    \(f[i][j]\) 表示以i为结尾的前 \(j + 1\) 段的最长满足条件的序列长度。

  • 转移:

  1. \(f[i][0] += (a[i] == 1)\)
  2. \(f[i][1] = max(f[i][0], f[i-1][1] + (a[i] == 2))\)
  3. \(f[i][1] = max(f[i][1], f[i-1][2] + (a[i] == 1))\)
  4. \(f[i][1] = max(f[i][2], f[i-1][3] + (a[i] == 2))\)
  • 答案:
    输出 \(f[n][4]\) 即可。

代码

int main() {for (int i = 1; i <= n; i++) cin >> a[i];scanf("%d", &n);for (int i = 1; i <= n; i++) {int a; scanf("%d", &a);f[i][0] = f[i - 1][0] + (a == 1);f[i][1] = max(f[i][0], f[i-1][1] + (a == 2));f[i][2] = max(f[i][1], f[i-1][2] + (a == 1));f[i][3] = max(f[i][2], f[i-1][3] + (a == 2));}int ans = 0;for (int i = 1; i <= n; i++)ans = max(ans, f[i][3]);printf("%d\n", ans);return 0;
}

个人反思

考试的思路

这道题在考试过程中,没有反应出最长上升子序列的模型,没有想到可以用动态规划的方式来解决,重点放在了区间的转换上和贪心,导致没能想出这道题目正确的解法。

怎么改正

  1. 问题转化:以后再看到 最长上升子序列 最长不下降子序列时等经典dp模型时要快速的明确这题的主体算法是动态规划,并将其转换为动规模型,其他算法也是如此。
  2. 算法思考:一定不要用同一个算法想太久,如果行不通要换一种算法在想想。

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

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

相关文章

佛山新网站建设渠道天津工程网站建设

MySQL 中的集群部署方案 前言 这里来聊聊&#xff0c;MySQL 中常用的部署方案。 MySQL Replication MySQL Replication 是官方提供的主从同步方案&#xff0c;用于将一个 MySQL 的实例同步到另一个实例中。Replication 为保证数据安全做了重要的保证&#xff0c;是目前运用…

山东网站建设设计小清新个人网站

七、高并发内存池–Page Cache 7.1 PageCache的工作原理 PageCache是以span的大小(以页为单位)和下标一一对应为映射关系的哈希桶&#xff0c;下标是几就说明这个哈希桶下挂的span的大小就是几页的&#xff0c;是绝对映射的关系。因为PageCache也是全局只有唯一一个的&#x…

完整教程:iOS 混淆与反调试反 Hook 实战,运行时防护、注入检测与安全加固流程

完整教程:iOS 混淆与反调试反 Hook 实战,运行时防护、注入检测与安全加固流程pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-f…

3.WPF - 依赖属性 - 实践

3.WPF - 依赖属性 - 实践pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", &q…

Attention进阶史(MHA, MQA, GQA, MLA)

在深度学习领域,注意力机制(Attention Mechanism)自诞生以来便成为推动自然语言处理和计算机视觉等任务发展的核心动力。从最初的多头注意力(MHA)到如今的高效变体,如多查询注意力(MQA)、分组查询注意力(GQA)…

实用指南:AI编程时代的变革:Replit CEO对话深度解析

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

2025北京个性旅行自由行口碑推荐北京汇通清源国际旅游公司,满足独特需求,自由随心

2025年,想要在北京开启一场个性十足的自由行?那就一定要了解一下北京汇通清源国际旅游公司。这家成立于2014年的旅游公司,注册资本300万元人民币,坐落于北京市朝阳区,业务广泛,涵盖全北京各个区域的旅游业务,包…

广州专业做网站多少钱加速游戏流畅的软件

今天我来讲一下在Linux下各环境的搭建&#xff0c;主要就讲一下jdk、MySQL、和一个代理服务器nginx 1、 jdk的安装配置 1)卸载自带openjdk 当我们拿到一个全新的ECS的时候上面有的会自带一个openjdk&#xff0c;但是我们一般不会用这个&#xff0c;所以在这里我们会先卸载这个自…

电子商务网站开发文档在线qq登录无需下载

选择、插入、冒泡三种算是最典型的排序算法了&#xff0c;空间复杂度都为O(1) 选择排序时间复杂度跟初始数据顺序无关&#xff0c;O(n2)&#xff0c;而且还不稳定; 插入排序时间复杂度跟初始数据顺序有关最好O(n),最坏O(n2)&#xff0c;稳定 冒泡排序时间复杂度跟初始数据顺序有…

网站 自定义表单招聘网站开发背景

陆游的《诗人苦学说》&#xff1a;从藻绘到“功夫在诗外” 今天看万维钢的《万万没想到》一书&#xff0c;看到陆游的功夫在诗外的句子&#xff0c;特意去查找这首诗的原文。故而有此文。 我国学人还往往过分强调“功夫在诗外”这句陆游的名言&#xff0c;认为提升综合素质是一…

学做网站多少钱百度关键词搜索广告的优缺点

目录 引言整体结构图方法介绍训练vision vocabulary阶段PDF数据目标检测数据 训练Vary-toy阶段Vary-toy结构数据集情况 引言 论文&#xff1a;Small Language Model Meets with Reinforced Vision Vocabulary Paper | Github | Demo 说来也巧&#xff0c;之前在写论文阅读&…

2025推拉门品牌推荐榜:聚焦玻璃推拉门,钛镁合金推拉门选择指南

随着家居品质需求升级,推拉门已成为阳台封窗、厨房隔断等场景的核心配置,但市场现状却让消费者陷入选择困境:部分产品宣称的隔音节能性能与实际体验严重不符,五金件易损耗、密封失效等质量问题频发,售后 “踢皮球…

C++中函数的分文件编写

C++中函数的分文件编写Posted on 2025-09-27 16:40 steve.z 阅读(0) 评论(0) 收藏 举报1、创建 .h 头文件 2、创建 .cpp 源文件 3、在 .h 头文件中,编写函数声明 4、在 .cpp 源文件中,编写函数定义 test.h #inc…

PyTorch详细安装指南与常见问题解决强大的方案

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

做网站大概一个月多少工资政务信息网站建设方案

作者 | butterfly100来源 | cnblogs.com/butterfly100/p/9034281.html一. 数据切分关系型数据库本身比较容易成为系统瓶颈&#xff0c;单机存储容量、连接数、处理能力都有限。当单表的数据量达到1000W或100G以后&#xff0c;由于查询维度较多&#xff0c;即使添加从库、优化索…

礼县建设局网站重庆公路工程建设信息管理系统

加入大语言模型(LLM) 接着,需要在聊天机器人中加入 LLM。这样,用户就可以和聊天机器人开展对话了。本示例中,我们将使用 OpenAI ChatGPT 背后的模型服务:GPT-3.5。 聊天记录 为了使 LLM 回答更准确,我们需要存储用户和机器人的聊天记录,并在查询时调用这些记录,可以用…

【Azure APIM】APIM在上传文件的时候,请求的Payload是否有文件大小的限制呢?

APIM在上传文件的时候,请求的Payload是否有文件大小的限制呢?问题描述 使用APIM + App Service的架构对外提供服务,其中一个接口为文件上传。在测试的时候,发现上传超过20MB的内容时候就会遇见报错,而不使用APIM时…

PolarDN PIoTS 简单

PolarD&N PIoTS 简单bluetooth test 一、查看题目附件有一个log文件和一个txt文件。 二、题目分析 根据txt文件提示,使用FrontLine11工具打开log文件使用FrontLine11进行分析,只有command指令才能控制设备,筛选…

图解KV Cache

LLM中下一个token预测 Transformer 生成隐藏状态Transformer 为所有 token 生成隐藏状态。 隐藏状态被投射到词汇空间。 最后一个 token 的 logits 用于生成下一个 token。生成新 token 的输出要生成新 token,我们只需…