10.16 —— 2021ccpc桂林D,B

news/2025/10/16 22:26:00/文章来源:https://www.cnblogs.com/jjjxs/p/19146400

D. Assumption is All You Need

又是一道思维题,还是没想出来,看了官解感觉巨麻烦,又翻了下民间题解,变得简洁易懂多了。蒟蒻太笨了qwq...

给定两个排列 \(a, b\),可以交换排列 \(a\) 的任意一个逆序对,问能否将 \(a\) 变成 \(b\),并求一个合法的操作过程。

由于只能交换逆序对,显然在操作过程中,逆序对的数量只会减少。可以察觉到:逆序对越多,可操作性越强,越有利于我们得到期望序列。因此我们可以贪心地想:让较大的数尽可能地在左边,这样序列的可操作性就会放大

考虑从左到右依次匹配:假设当前正在匹配第 \(i\) 个位置,分情况讨论:

  1. \(a[i] = b[i]:\) 已经匹配,直接跳过
  2. \(a[i] < b[i]:\) 由于只能交换更小的数到该位置,因此可以判定无解。
  3. \(a[i] > b[i]:\) 此时在 \(i\) 位置的右侧必有满足 \(a[i] > a[j] = b[i]\) 的位置 \(j\),可以将其交换过来以匹配位置 \(i\),但这样太草率了,因为在位置 \(j\) 特别靠后的情况下,直接交换会导致 \(a[i]\) 到位置 \(j\) 上,这样不一定是最优的,因为在将 \(a[j]\) 交换到位置 \(i\) 前,\(a[i]\) 可能会有位置更靠左的去处(前面说了,让较大的数尽可能地在左边)。我们可以通过多次交换来实现它:在将 \(a[j]\) 交换到位置 \(i\) 之前,可以先将 \(a[i]\) 交换到 \(a[j]\) 左侧的某个位置,使得交换后 \(a[j]\) 仍能被换到位置 \(i\)。具体地,我们可以从 \(i\) 位置开始,向右找第一个 \(a[i] > a[k]\)\(a[k] \geq b[i]\) 的位置 \(k\) 作一次交换,持续这样的操作,直到位置 \(i\) 匹配。与直接一次交换匹配相比,这样做可以在使得位置 \(i\) 匹配的情况下,让原 \(a[i]\) 尽可能靠左;同时我们发现,所有交换的位置在全部交换操作完成后,相对位置不变,这样做也使得逆序对的损失达到最小化,显然更有利于后面的操作

复杂度 \(O(n^{2})\)

后来才发现官解也是这种做法,晦涩难懂的部分全部都是对这种做法的证明。确实,严格证明还是 \(too\space hard\) 的。

补完后还是觉得太难想了,看来距离牌子还差得很远。。。

code

B. A Plus B Problem

一道简单模拟,开始用了 \(O(q\log^{2}n)\) 的线段树 + 二分,TLE7; 后来看了官解,才发现二分是可以优化掉的,直接用平衡树或者 \(set\) 维护满足 \(r1[i] + r2[i] \neq 9\) 的所有位置 \(i\) 即可,复杂度是 \(O(q\log n)\) 的,但还是 TLE 7。可能是实现得比较繁琐,常数太大了?看民间题解里也有用线段树区间赋值做的,应该还是自己的实现有点问题。。。

脑子糊了,明天再看。

code_tle7

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

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

相关文章

3.springboot-容器机制-@注解

3.springboot-容器机制-@注解2025-10-16 22:23 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important…

苹果M5芯片正式登场 一文带你了解三款新品有何升级

苹果M5芯片正式登场 一文带你了解三款新品有何升级Posted on 2025-10-16 22:25 lzhdim 阅读(0) 评论(0) 收藏 举报昨天苹果突然带来了M5芯片,并发布了全新的14英寸MacBook Pro、新款iPad Pro以及新一代Vision Pr…

日志分析-windows日志分析base

简介 客户反映自己的用户在4月6日中午12点左右被挤掉线了,请你上机排查安全事件。 连接信息: 用户名/密码Administrator/4210bf@ RDP 连接端口3389 连接用户名/密码 Administrator/4210bf? 1、客户机的系统安全日志…

2025/10/16 模拟赛笔记 - sb

2025/10/16 模拟赛笔记 A. cipher 期望得分:100pts 实际得分:100pts 时间:50min 简单题,但是我是 fvv,有些细节调了会儿 B. seq 期望得分:100pts 实际得分:80pts 时间:1h 挂分原因:没有初始化导致有些不合法的…

神经网络之Softmax激活函数求导过程 - 指南

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

课后作业3

https://files.cnblogs.com/files/blogs/847991/课后作业3.rar?t=1760623964&download=true

KMP和Manacher

以下代码相关注释未完善,大体内容如下: #include <iostream> #include <vector> #include <string> #include <string_view>#define S(X) for (char i : X) {\std::cout << i;\}\cl…

experiment2

Task1 问题1: srand(time(NULL));的作用:经过查询,发现这行代码用于初始化随机数生成器的种子,srand()是设置随机种子的函数,time(NULL)返回当前系统时间,将当前时间作为种子,确保每次程序运行时产生的随机数序列不同.…

索引有什么作用?

一句话概念 索引(Index) 就像是数据库里的“目录”或“书的索引页”。 它的主要作用是:加快查询速度,减少数据库扫描整张表的次数。📖 举个简单的例子 假设你有一个商品表 products,里面有几万条记录。 如果你执…

关于卷积神经网络(CNN)的入门学习报告

关于卷积神经网络(CNN)的入门学习报告 在观看了B站上关于卷积神经网络的系列教学视频后,我对CNN的基本原理和核心组件有了初步的认识。 一、 核心动机:解决全连接网络处理图像时的困境 首先,为什么要用CNN?传统的…

【记录】Ubuntu|Ubuntu服务器挂载新的硬盘的流程(开机自动挂载) - 指南

【记录】Ubuntu|Ubuntu服务器挂载新的硬盘的流程(开机自动挂载) - 指南2025-10-16 21:43 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: …

10月16日日记

1.今天体测50米,引体向上等。 2.明天学习英语 3.底层无法处理的异常要抛出,有明确处理策略时才捕获,切忌捕获后什么都不做。

LinuxC++——etcd-cpp-api精简源代码函数参数查询参考 - 教程

LinuxC++——etcd-cpp-api精简源代码函数参数查询参考 - 教程pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Cons…

TELUS如何通过Google技术栈实现业务增长与生产力跃升

本文详细介绍了加拿大通信技术公司TELUS通过部署ChromeOS、Google Workspace、Chrome Enterprise Premium和Cameyo构建企业级技术栈,实现登录速度提升3倍、降低运营成本并改善客户服务体验的数字化转型实践。编辑注 今…

云服务器上部署 EasyTier中转服务器

云服务器开放端口 控制台中放开11010端口 连接云服务器安装软件 wget -P /root/ https://ghfast.top/https://github.com/Doboo/scripts/blob/main/easytier.sh && chmod 777 /root/easytier.sh 设置组网信息 …

问世界

在这个世界上,是否所有的问题都有答案?还是说这个世界本身就是个巨大的问题?

为 .NET 10 GC(DATAS)做准备

原作者:maoni 原文链接:https://maoni0.medium.com/preparing-for-the-net-10-gc-88718b261ef2在 .NET 9 中,我们默认启用了 DATAS。但 .NET 9 并不是长期支持(LTS)版本,因此很多人会在升级到 .NET 10 时首次获得…

实用指南:Kotlin协程 vs Java虚拟线程:从Continuation挂起到ForkJoin调度,解锁现代并发新范式

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