[AGC062B]Split and Insert

news/2025/3/20 18:20:11/文章来源:https://www.cnblogs.com/gold-spade/p/18783640

不是 AGC 怎么做到题题代码短,思维量大的?

链接

Description

给定一个排列 \(A=(A_1,A_2,\dots,A_N)\) 。一开始,排列满足 \(A_i=i\ (1\leq i \leq N)\)。接下来高桥会进行 \(K\) 次操作,操作如下:

  • 任意选择一个 \(k\) ,选择排列最末尾 \(k\) 个元素,将其插入进前面 \(n-k\) 个元素。形式化的,操作之后的排列需要满足:
    1. \((A_1,A_2,\dots,A_{N-k})\) 是一个操作后排列子序列(不要求连续)
    2. \((A_{N-k+1},A_{N-k+2},\dots,A_{N})\) 是操作后排列的一个子序列(不要求连续)

定义所有操作的代价是 \(\displaystyle\sum_{i=1}^{K}k_iC_i\),其中 \(k_i\) 表示第 \(i\) 轮选择的 \(k\)

现在高桥君想问你能否在 \(K\) 次以内将排列变为 \((P_1,P_2,\dots,P_N)\),如果可以输出最小代价,如果不能输出 \(-1\)

  • $ 2 \leq\ N \leq 100 $
  • $ 1 \leq\ K\leq 100 $
  • $ 1 \leq\ C_i\leq 10^9 $
  • $ (P_1,P_2,\dots,P_N)$ 是 \(1\)\(N\) 的排列。
  • 所有输入均是整数。

Solution

倒着考虑,发现一次逆操作为:选一个长为 \(k_i\)\(A\) 的子序列放在最后。最初状态为 \(P\),问它执行 \(K\) 次逆操作能否有序,并输出最小代价。

从值域方向考虑,最后一次逆操作时,应当满足选的子序列值域为 \([1,x]\),剩下的子序列 \([x+1,N]\),且这两个子序列必须有序。这启发我们从值域进行区间 \(\rm dp\)

定义 \(f_{i,l,r}\) 表示 \(i\) 次逆操作后,\([l,r]\) 这一段值域在序列中已经有序的最小代价。

转移:\(f_{i,l,r}=\displaystyle\min_{x=l}^{r}\{f_{i-1,l,k}+f_{i-1,k+1,r}+(r-x)C_{K-i+1}\}\)

边界:\(f_{0,l,r}=\) 值域为 \([l,r]\) 的子序列在 \(P\) 序列中有序。

submission

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

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

相关文章

keil仿真时导出数据操作

keil仿真时导出数据操作 save D:\savedata.txt 0x20001013,0x20001035

spring-boot-starter-validation

官方提供的注解 spring-boot-starter-validation 是 Spring Boot 提供的一个 starter,是一个用于验证 Java Bean 的标准,它提供了一套注解和相应的运行时 API 来定义和执行校验规则。 具体来说,当你在项目中引入 spring-boot-starter-validation 后,你可以使用一系列预定义…

省选算法复习

省选算法复习 1. 线段树优化建图 当我们需要向区间内所有点连边或者从区间中所有点连到某个点的时候,便可以使用线段树来优化,如果需要从区间每一个点连到另一个区间每一个点的话,加一个虚点就好了。 这不是一个很困难的技巧,关键在于要建模。 P5471 [NOI2019] 弹跳 - 洛谷…

fastadmin订单父子表管理端

fastadmin后台父子表使用方法 发布于 2021-01-22 12:48:10fastadmin后台的所有表格都是支持父子表配置的,只需要简单修改一下对应的JS即可,下面直接进入主题。示例是我的全国省市行政区划表,是从国家统计局网站采集下来的,共五级行政数据,非常适合用来做父子表,按照级别一…

Rudolf and k Bridges

Rudolf and k Bridges 题目 大致题意上图为俯视图 有一个\(nXm\)的网格,下标从\(1-n\) 以及从 \(1-m\),\((i, j)\) 的值就是这个这垂直一格水的深度 现在要安装支架,有几个信息:\((i, 1)\) 和 \((i, m)\) 处必须要安装相邻支架的距离不能超过 \(d\), 相邻距离为 \(abs(j - …

背离Divergence Trading ,贪小便宜

趋势交易(trend trading)和背离交易(divergence trading),代表了两种不同的交易策略。做背离交易相当于赌市场短期失效,承认你比市场聪明,虽然能赚小钱,但往往是亏大钱的根源。 贪小便宜爱背离,贪小便宜(gain small advantages)不爱止损(cut losses),所以背离和不止损…

在鸿蒙NEXT开发中实现一个语音识别组件

鸿蒙系统发布以后都不知道叫它5.0版本还是NEXT版本了,哈哈,反正是最新版本就对了。对于语音转换文字,鸿蒙系统提供了离线语音识别模型speechRecognizer,语种目前支持中文,识别效果非常不错。今天要分享的是使用speechRecognizer实现一个语音识别组件。要实现语音识别,首先…

激光代加工产品一览-代加工-外协加工-委外加工-激光代加工-河南郑州亚克力切割雕刻代加工-芯晨微纳(河南)

关键词:河南省郑州市、激光代加工、激光打标、激光切割、激光雕刻、激光打孔、激光毛化、激光分切 简介:芯晨微纳(河南)光电科技有限公司,专注于激光微纳代加工、设备/耗材代理销售、设备租赁、技术推广服务,可处理材料类型及应用范围十分广泛,欢迎来电咨询(韩经理1823…

20242801 2024-2025-2 《网络攻防实践》第4次作业

20242801 2024-2025-2 《网络攻防实践》第4次作业 一、实验内容 ​ 在虚拟机环境中完成TCP/IP协议栈重点协议的攻击实验,学习ARP缓存欺骗攻击、ICMP重定向攻击、SYN Flood攻击、TCP RST攻击、TCP会话劫持攻击的原理和相关知识,并动手进行实践。 二、实验过程 (一)ARP缓存欺…

缓存监控治理在游戏业务的实践和探索

通过对 Redis 和 Caffeine 的缓存监控快速发现和定位问题降低故障的影响面。作者:来自 vivo 互联网服务器团队- Wang Zhi 通过对 Redis 和 Caffeine 的缓存监控快速发现和定位问题降低故障的影响面。 一、缓存监控的背景游戏业务中存在大量的高频请求尤其是对热门游戏而言,而…

从零开始驯服Linux(一):ZYNQ-Linux启动文件构建全解析

从零开始驯服Linux(一):ZYNQ-Linux启动文件构建全解析 ZYNQ系列芯片集成了ARM处理器和FPGA(可编程逻辑单元),正是因为由于ARM处理器的存在,所以我们可以在ZYNQ系列芯片上面运行Linux系统。 在ZYNQ系列芯片上运行Linux会给我们带来很多优势:首先,我们可以将部分逻辑处理…

# 20241902 2024-2025-2 《网络攻防实践》第六周作业

1.实验内容 通过本周的学习和实践,学习使用metasploitable对windows进行远程的渗透测试实验;学习利用wireshark进行日志文件的分析和攻击取证,解读攻击者所利用的攻击、攻击者的具体操作以及如何对攻击行为进行防范;实践同一内网中对利用metasploitable对其他windows系统进…