CF2039E Shohag Loves Inversions

news/2025/9/19 21:54:22/文章来源:https://www.cnblogs.com/xxmbb/p/19101766

CF2039E Shohag Loves Inversions

题意:

给你一个数列,初始数列为 $ a = [0, 1] $ ,现在重复进行以下操作若干次:

  • 将当前数组中逆序对个数 \(k\) 插入当前数组中任意一个位置,包括开头或者结尾。

其中 \(n\le 1e6\)

思路:

题意的逆序对数显然不好维护,首先模拟一下操作过程:

初始的逆序对数 \(k=0\) ,在一步步插入的过程中,若插入到了 \(1\) 的后面,我们的逆序对数发生了第一次的改变,\(k=0 \to k=1\) ,序列状态此时为 \(0\dots010\)

然后一步步插入 \(1\) ,当第一次插入到了最后一个 \(0\) 的前面,我们逆序对数再次发生改变 \(k=1\to k\ge 2\)

再次插入 \(2\) ,当我们一直插入到序列末尾的 \(2\) 连续段之中时,逆序对数不变,如果插入到了除此之外的前面的任意一个位置,\(k\) 的值发生改变。

我们发现当 \(k\ge 2\) 时无论如何操作,最终的过程都与 \(k=2\) 同理,所以此时我们发现问题可以分析成三种子问题:\(k=0\)\(k=1\)\(k\ge 2\) ,我们最终只需要把这三种问题形成的序列种数相乘即可。

  • \(k=0\) ,序列一定为 \(0\dots 01\)

  • \(k=1\) ,序列一定为 \(0\dots 0101\dots 1\)

  • \(k\ge 2\) ,可以设计 \(dp\) 状态,观察到若存在两个不同的刚刚升级完的序列,那么此时无论如何插入新逆序对数的位置,对于方案数都不会有影响,所以此时的序列方案数仅与序列长度相关,所以可设 \(f_i\) 表示序列长度为 \(i\) 的刚刚升级完的序列方案数为 \(f_i\) ,那么我们此时就分为两种情况进行插入:

    1. 插入序列末尾的 \(k\) 连续段,对于逆序对数无影响
    2. 插入 \(k\) 连续段前一个位置之前,逆序对数改变

    那么我们就有转移 \(f_i=\sum_j j\times f_j\)

所以我们只需要把这三种情况拼接即可。

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

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

相关文章

深入解析:sqlite3的加解密全过程

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

U522155 板垣 カノエ is WATCHING YOU std

U522155 板垣 カノエ is WATCHING YOU #include<bits/stdc++.h> #define int long long #define add(a,b) to[++ tot] = b,nxt[tot] = h[a],h[a] = tot #define con putchar_unlocked( ) #define ent putchar_u…

ctfshow web

ctfshow里面免费的web题不写白不写ctf.show_红包题第二弹1打开题目显示这样 看看源码有无提示可以看到提示了cmd参数,那我们就随便传点东西看看会有什么回显又是代码审计,可以看到大小写字母过滤后只有小写p可以使用…

代码随想录算法训练营第三天 | leetcode 203 707 206

203移除链表元素 注意事项:java语言的访问链表和数据用的是".",空指针是小写的null。在删除链表时先对表头进行判断避免表头是null和表头元素是要删除的元素,下面进行循环寻找时要注意判断指针的下一个指针…

Codeforces Round 1051 (Div. 2) A~D2

A. All Lengths Subtraction 思维。 每次选择长度为 \(k(k \in [1,n])\) 的区间减 \(1\),那么第一个首选的就是 \(a_i = n\) 的 位置,然后维护 \(n\) 所在的区间,检查 \(n-k+1\) 是否在其两边,有的话就扩大区间,否…

【F#学习】数组:Array

Array 在F#中, 一个数组(Array)包含0个或多个元素,长度固定,但内容可以改变。元素需要具有相同的类型。 // 声明一个数组。注意看清操作符是 [| 和 |] let empty = [| |] let emptyAlternative = Array.emptylet …

CTFWEB姿势总结

CTFWEB姿势总结 RCE 尝试是否有命令执行漏洞 示例 payload 思路(Linux 为例):简单命令report; whoami report|whoami report$(whoami)如果 URL 执行后页面输出了你的用户名(例如 www-data),说明命令执行存在。 W…

详细介绍:架构思维:分布式缓存实战

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

规模化加速AI:从用户、开发者到企业的深度策略解析

本文深入探讨了加速AI系统的三大维度:终端用户追求的实时响应体验、开发者面临的数据与硬件瓶颈解决方案,以及企业关注的投产效率与合规性。文章详细分析了边缘推理、模型压缩、多云GPU调度等关键技术策略,并引用行…

ctfshow 菜狗杯

没想到在菜狗杯写到了qq列表里的佬出的题ctfshow 小舔田? <?php include "flag.php"; highlight_file(__FILE__);class Moon{public $name="月亮";public function __toString(){return $thi…

详细介绍:测试用例详解

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

国际服务器(VPS):泰国、印尼、菲律宾、马来西亚、香港、台湾、新加坡、日本、美国、英国等。

VPS 国际服务器(VPS):泰国、印尼、菲律宾、马来西亚、香港、台湾、新加坡、日本、美国、英国等。 mleo.siteVPS推荐 泰国、印尼、韩国、菲律宾、马来西亚、亚太等 Lightnode:1C2G-$7.71/Month 美国(Month) CloudCo…

缓存常见问题

缓存常见问题 缓存穿透 概念: 查询缓存中没有,数据库也没有的数据,大量的请求都穿透了缓存层直达数据库,导致数据库因压力过大而宕机。 本质是一种人为攻击手段。 解决方案:数据库不存在数据时,存放一个临时数据到缓存…

ctfshow 电子取证

这里的电子取证应该说算入门难度,不是很难,感兴趣的新手可以了解一下JiaJia-CP-1 先把题目文件下载下来看到是raw后缀,常见的内存镜像的后缀,使用volatility打开(这边真心建议使用kali中的volatility打开,windows…

插入排序与希尔排序 - 实践

插入排序与希尔排序 - 实践2025-09-19 21:28 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; …

最新IDEA 2025 专业版破解永久破解教程(附资源)intellij IDEA

一、intellij idea软件下载 [软件名称]:intellij idea 克网盘下载链接:https://pan.quark.cn/s/2af0fb5ec2e5 迅雷文件分享:Intellij IDEA 2025链接:https://pan.xunlei.com/s/VO_X5mj3eocLmO5BuL5ztWKhA1?pwd=uw…

AtCoder ABC423F - Loud Cicada 题解 容斥原理

题目大意: 问 \([1, Y]\) 范围内有多少个数是:\(A_1, A_2, \ldots, A_N\) 中恰好 \(K\) 个数的倍数。 解题思路: 容斥原理。 思路完全来自 StelaYuri大佬的博客。 示例程序: #include <bits/stdc++.h> using…

1756:八皇后

题目 总时间限制: 1000ms 内存限制: 65536kB 描述 会下国际象棋的人都很清楚:皇后可以在横、竖、斜线上不限步数地吃掉其他棋子。如何将8个皇后放在棋盘上(有8 * 8个方格),使它们谁也不能被吃掉!这就是著名的八皇…

矩阵置零-leetcode

题目描述 给定一个 *m* x *n* 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。 示例 1:输入:matrix = [[1,1,1],[1,0,1],[1,1,1]] 输出:[[1,0,1],[0,0,0],[1,0,1]]示例 2:输…

重新开始配置hadoop等

重新开始配置hadoop等1