2025. 02. 22 CW 模拟赛 A. 怎么又是先增后减

news/2025/2/24 8:30:36/文章来源:https://www.cnblogs.com/Steven1013/p/18733249

A. 怎么又是先增后减

题意

给定一个序列 \(A\), 每次操作只能交换相邻两个元素, 求使得序列 \(A\) 先增后减的最小操作次数.

思路

我们每次考虑当前未被处理的最小的 \(x\), 其一定被移动到序列的最左边或者最右边. 若它向左移动, 那么移动次数即为左边比它大的数的个数; 向右也同理, 为右边比它大的数的个数.

由于我们要最小化操作次数, 所以我们贪心地选择将 \(x\) 移动到操作次数最小的一边, 这样一定是最优的.

在实现上, 我们需要不断地查询, 更新 \(x\) 左右两侧比起大的数, 用树状数组 / 线段树可以做到 \(\mathcal{O}(n \log n)\) 的复杂度.

#include "iostream"#define int long long#define pii pair<int,int>using namespace std;constexpr int N = 1e5 + 10, V = 1e5;int n, a[N], pre[N], suf[N];inline int lowbit(int x) {return (x & (-x));
}
struct BIT {int c[N];inline void modify(int p) {for (int i = p; i <= V; i += lowbit(i))++c[i];}inline int query(int p) {int res = 0;for (int i = p; i; i -= lowbit(i))res += c[i];return res;}inline int queryRight(int p) {return query(V) - query(p);}
} c1, c2;signed main() {cin.tie(nullptr)->sync_with_stdio(false);cin >> n;for (int i = 1; i <= n; i++)cin >> a[i];for (int i = 1; i <= n; i++) {pre[i] = c1.queryRight(a[i]);c1.modify(a[i]);}for (int i = n; i >= 1; i--) {suf[i] = c2.queryRight(a[i]);c2.modify(a[i]);}int ans = 0;for (int i = 1; i <= n; i++)ans += min(pre[i], suf[i]);cout << ans << '\n';return 0;
}

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

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

相关文章

解密ZAB协议:Zookeeper一致性的核心实现

一致性问题 设计一个分布式系统必定会遇到一个问题—— 因为分区容忍性(partition tolerance)的存在,就必定要求我们需要在系统可用性(availability)和数据一致性(consistency)中做出权衡 。这就是著名的 CAP 定理。 ZooKeeper 的处理方式,保证了 CP(数据一致性) 一致…

解密prompt系列49. 回顾R1之前的思维链发展路线

我先按照自己的思路来梳理下R1之前整个模型思维链的发展过程,可以分成3个阶段:大模型能思考,外生慢思考,内生慢思考在所有人都在谈论R1的今天,作为算法也是有些千头万绪无从抓起。所以这一章先复盘,我先按照自己的思路来梳理下R1之前整个模型思维链的发展过程。下一章再展…

CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比

CSnakes 是一个用于在.NET项目中嵌入Python代码的工具,由.NET源生成器和运行时组成,能够实现高效的跨语言调用,Github:https://github.com/tonybaloney/CSnakes。以下是关键信息整理:核心特性跨版本支持:兼容.NET 8-9、Python 3.9-3.13,支持Windows/macOS/Linux系统高性…

Plotly.NET 一个为 .NET 打造的强大开源交互式图表库

前言 今天大姚给大家分享一个 .NET 强大、免费、开源的交互式图表库:Plotly.NET。 项目介绍 Plotly.NET 一个为 .NET 打造的强大、免费、开源的交互式图表库,支持 C# 和 F#编程语言,它构建在 plotly.js 之上并提供多个 API 层,用于创建、样式化和渲染美观的数据可视化图表。…

Apple Store 无法更新 App 解决方案 All In One

Apple Store 无法更新 App 解决方案 All In One Apple store 中可以查看新版 App, 但是无法更新新版 App, 会一直在转圈加载, 然后更新失败 ❌ 新版 Apps 与当前操作系统版本不匹配,需要先更新系统,才能安装新版的 Apps 更新 iOS 系统 ✅Apple Store 无法更新 App 解决方案 A…

合宙 ESP32C3 首个ardunio程序

https://blog.csdn.net/dpjcn1990/article/details/136085443 #define LED_BUILTIN1 12 #define LED_BUILTIN2 13//使用USB转串口即可 #define RS485_RX_PIN 1 #define RS485_TX_PIN 0 #define RS485_ENABLE_PIN 18 #define RS485 Serial1 void setup() { Serial.begin(9…

全网仅存方案,跟限速说拜拜!

关注A梦的小伙伴们都知道,A梦资源分享主要夸克网盘。有很多小伙伴也留言过想要其它网盘的链接,这方面确实众口难调,每个人的偏好和需求不同;另一个原因是夸克提供了较大的存储空间,能够更好地满足A梦的资源分享需求。 但网盘严重的限速也是很多小伙伴吐槽的点,考虑到A梦粉…

uniapp+h5---进行混合开发

uniapp和h5进行混合开发,最近在接手开发微信小程序,在技术选型的时候,拟采用uniapp+h5进行混合开发。 想必为啥要使用uniapp开发,就不用多说了?就是为了进行跨平台开发。如果使用微信小程序的开发方式,开发出来的应用就只能在微信小程序使用,但是使用uniapp就可以多端开…

dokcer-compose方式部署 mongo集群

声明:本人在单台机器上部署的mongo机器, mongo版本为8.0, 这玩意居然部署了一天,终于搞好了, 希望对后面想要部署的人有帮助 先创建一个mongodb目录, 后续的配置,数据都存放在这个目录中: 1. 创建mongo-secrets目录,mkdir mongo-secrets 2. 创建keyfile文件, openssl…

两个终端小玩具:Yazi和elinks

1. 终端文件管理器yazi 可以很方便地查找文件,跳转,并且很容易看出文件 1.1 下载安装 参考官方地址:鸭子官方安装手册安装rust编译环境curl --proto =https --tlsv1.2 -sSf https://sh.rustup.rs | sh rustup update编译yazigit clone https://github.com/sxyazi/yazi.git c…

两个终端小玩具

1. 终端浏览器 1.1 m3w 1.2 elinks 2. 终端文件管理器yazi 可以很方便地查找文件,跳转,并且很容易看出文件 2.1 下载安装 参考官方地址:鸭子官方安装手册安装rust编译环境curl --proto =https --tlsv1.2 -sSf https://sh.rustup.rs | sh rustup update编译yazigit clone htt…

用大模型DeepSeek分析一篇小公司创业失败的文章,失败的原因有哪些?

第一步:把原文保存为Doc格式文档 原本我想直接让 DeepSeek 分析链接的文章,但是两次写提示词后让 DeepSeek 深度分析,都失败了,它说无法直接访问,所以就无法直接分析原文内容。但还是基于搜索的结果进行普遍原因分析。 于是就把原文直接保存为 Doc,上传到 DeepSeek 让它分…