树状数组

lc2659

树状数组统计已删除元素,按数值升序遍历元素位置

分前后段计算每次删除的移动步数并累加,求解清空数组的总操作数。

// 树状数组模板
class BIT {
vector<int> tree;
public:
BIT(int n) : tree(n) {}

// 将下标 i 上的数加一
void inc(int i) {
while (i < tree.size()) {
++tree[i];
i += i & -i;
}
}

// 返回闭区间 [1, i] 的元素和
int sum(int x) {
int res = 0;
while (x > 0) {
res += tree[x];
x &= x - 1;
}
return res;
}

// 返回闭区间 [left, right] 的元素和
int query(int left, int right) {
return sum(right) - sum(left - 1);
}
};

class Solution {
public:
long long countOperationsToEmptyArray(vector<int> &nums) {
int n = nums.size(), id[n];
iota(id, id + n, 0);
sort(id, id + n, [&](int i, int j) {
return nums[i] < nums[j];
});

long long ans = n; // 先把 n 计入答案
BIT t(n + 1); // 下标从 1 开始
int pre = 1; // 上一个最小值的位置,初始为 1
for (int k = 0; k < n; ++k) {
int i = id[k] + 1; // 下标从 1 开始
if (i >= pre) // 从 pre 移动到 i,跳过已经删除的数
ans += i - pre - t.query(pre, i);
else // 从 pre 移动到 n,再从 1 移动到 i,跳过已经删除的数
ans += n - pre + i - k + t.query(i, pre - 1);
t.inc(i); // 删除 i
pre = i;
}
return ans;
}
};

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

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

相关文章

go gin 入门教程,蛮不错的

go gin 入门教程,蛮不错的go hello world 手把手教你基于gin从零搭建一个属于你自己的go项目(一) https://juejin.cn/post/7011709485957791781 手把手教你基于gin从零搭建一个属于你自己的go项目(二) https://juejin…

Cursor 中优雅使用 Agent Skills:从 0 到一套可复用的“技能系统”

Cursor 中优雅使用 Agent Skills&#xff1a;从 0 到一套可复用的“技能系统”这篇文档是为博客平台&#xff08;如 CSDN&#xff09;准备的版本&#xff0c;去掉了本机路径、代理等敏感信息&#xff0c;只保留通用思路和可复用步骤。你可以直接复制内容到博客中发布。一、先搞…

智能体设计模式全景总结:21个模式快速串联指南

智能体设计模式全景总结&#xff1a;21个模式快速串联指南 &#x1f3af; 本文档是《Agentic Design Patterns》21个设计模式的快速串联总结&#xff0c;帮你建立完整的知识体系&#xff0c;快速理解各模式之间的关系和演进路径。 &#x1f4da; 目录导航 一、设计模式全景图二…

Java毕设项目:基于Web的学生宿舍管理系统(源码+文档,讲解、调试运行,定制等)

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

【毕业设计】基于Web的学生宿舍管理系统(源码+文档+远程调试,全bao定制等)

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

快来看看吧

我是一个鸿蒙初学者开发了一个app但是不太会测试 大家有时间能不能帮忙测试体验 我一个人设备有限 但是还是想做些高质量的app。拜托了 义衣

破茧成蝶:DevOps流水线测试环节的效能跃迁之路 - 教程

破茧成蝶:DevOps流水线测试环节的效能跃迁之路 - 教程pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas&q…

[翻译][AlexNet 原文] ImageNet Classification with Deep Convolutional Neural Networks

课余时间,手动翻译了 AlexNet 的原文,感觉这篇文章比较适合小白学习,顺便完成了导论作业 但是没有专门去插入引用部分( 经过llm检查,改正了少许翻译错误注:全文系手动翻译,虽经过ai检查,仍无法避免少许错误。若…

导师推荐10个AI论文写作软件,本科生轻松搞定毕业论文!

导师推荐10个AI论文写作软件&#xff0c;本科生轻松搞定毕业论文&#xff01; AI 工具助力论文写作&#xff0c;让毕业不再焦虑 对于许多本科生来说&#xff0c;撰写毕业论文是一项既重要又令人头疼的任务。从选题、收集资料到撰写初稿、反复修改&#xff0c;每一个环节都可能…

AVERAGEA函数深度解析:Excel中被忽略的平均值计算利器

当你遇到包含逻辑值、文本甚至错误值的复杂数据时&#xff0c;AVERAGEA函数将成为你的救星&#xff01; 一、AVERAGEA vs AVERAGE&#xff1a;本质区别深度解析 函数基础对比 AVERAGE(数值1, [数值2], ...) -- 只计算数值 AVERAGEA(值1, [值2], ...) -- 计算所有非空值…

VM访问View(Interaction)

引言ViewModel访问View的场景非常常见&#xff0c;比如打开关闭窗口&#xff0c;访问剪切板等等&#xff0c;想操作前端View的一些功能和属性必须要View的引用。这里介绍一种非常高效的方式与View进行交互。当然有很多方式&#xff0c;比如回调函数、CommunityToolkit.MVVM的Me…

2026必备!本科生论文写作TOP8 AI工具测评

2026必备&#xff01;本科生论文写作TOP8 AI工具测评 2026年本科生论文写作工具测评&#xff1a;为什么需要一份权威榜单&#xff1f; 随着人工智能技术的不断进步&#xff0c;越来越多的本科生开始借助AI工具辅助论文写作。然而&#xff0c;面对市场上琳琅满目的工具&#x…

我们是怎么用Sealos把新项目上线周期从3周压到3天的

三周到三天,听起来像是标题党,但这确实是我们团队过去半年的真实经历。 先说结论:时间都浪费在哪了 拆解一下原来3周的流程:环节 传统耗时 卡在哪申请服务器资源 3-5天 走审批、等采购、排队分配搭建基础环境 2-3天…

一道“找数”的题,为什么能成为算法世界的常青树?

一道“找数”的题,为什么能成为算法世界的常青树? 从 Missing Number 说起 一、引子:这题你肯定见过,但你真的“理解”了吗? 很多人第一次见到这道题,心里都会冒出一句话: “这也叫算法题?小学数学吧?” 题目很简单: 给你一个包含 0 ~ n 中 n 个不同数字 的数组, …

仪器仪表智能化以及接入MES流程

目录 一、核心理念&#xff1a;从“哑终端”到“智能节点” 二、仪器仪表智能化的四个层级 三、接入MES的完整流程与架构 流程步骤详解&#xff1a; 四、关键技术要点与挑战 五、价值与收益 总结 仪器仪表智能化及接入MES&#xff08;制造执行系统&#xff09;是智能制造…

鲁班猫4用于工业设备测试检测可行性

目录 一、可行性分析&#xff08;为什么可行&#xff1f;&#xff09; 二、核心优势 三、面临的挑战与注意事项&#xff08;工业级应用的考量&#xff09; 四、典型的工业测试检测应用场景 五、选型与实施建议 鲁班猫4是一款极具性价比和灵活性的选择&#xff0c;特别适合…

扫描线杂题选做

P3863 对右端点扫描线,将修改操作差分成 \((l,v)\) 和 \((r+1,-v)\)。 那么每次操作对时间维上 \([i,q]\pm v\),询问即为教主的魔法。 #include <bits/stdc++.h> #define int long long #define rd read() usi…

完整教程:Agent近期记忆技术及落地实践整理

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

AOI CCD检测 数据上传程序 设计逻辑问题

1、后台稳定,WebAPI,数据库。 上传数据程序调用webapi,开发的webapi的dll的,判断逻辑要清楚,唯一一个变量判断。 不要变量判断不准,又找一个变量判断,即使 不得不多个变量判断,也要能模拟出情况判断(模拟错误场…