news 2026/7/1 22:16:41

U654615 比特聚集(bit)补题报告

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
U654615 比特聚集(bit)补题报告

先看题目:

题目分析

我们有一个长度为的二进制字符串,包含字符'0''1',至少有一个'1'
可以交换相邻字符,每次交换算一次操作。
目标:让所有'1'连续排列(形成一段连续的'1')。
求最少操作次数

思路分析

关键观察

  1. 最终'1'聚集到连续的一段,但我们可以自由选择这个连续段的位置。

  2. 我们只关心'1'的相对位置变化,不关心'0'的具体分布(除了它们会占用位置)。

  3. 交换相邻字符,相当于把一个'1'向左或向右移动一位。

  4. 把所有的'1'聚集到一起,等价于把每个'1'移动到某个中心位置附近。

  5. 这其实是一个经典问题:最小化所有'1'移动到连续位置的总交换次数。

转化为数学模型

假设最终'1'的连续段是从位置 k 到位置 k+m−1,其中 m 是'1'的个数。
设原字符串中'1'的位置(下标从 1 开始)是:

p1,p2,…,pm

最终连续段的位置是:

k,k+1,…,k+m−1

那么把第 j 个'1'从 pj​ 移动到 k+j−1 需要的交换次数就是:

总操作次数为:

我们要选择一个整数 k 使得这个和最小。

化简

令 qj=pj−(j−1),那么上式变成:

其中 qj​ 是已知的常数(因为 pj​ 已知)。

所以问题转化为:

已知数组 q1,q2,…,qm,找一个整数 k 使最小。

这是经典问题:最小绝对偏差和,当 k 取 q 的中位数时,和最小。

因此:

  • 先找出所有'1'的位置 p1,p2,…,pm。

  • 计算 qj=pj−(j−1)。

  • 对 q 数组排序,取中位数

  • 计算,这就是最小操作次数。

正解:

#include <bits/stdc++.h> using namespace std; int main() { ios::sync_with_stdio(false); cin.tie(0); int n; string s; cin >> n >> s; // 收集所有1的位置 vector<int> pos; for (int i = 0; i < n; i++) { if (s[i] == '1') { pos.push_back(i + 1); // 转成1-based } } int cnt = pos.size(); // 1的个数 // 计算q数组 vector<long long> q(cnt); for (int i = 0; i < cnt; i++) { q[i] = pos[i] - i; // 公式推导:q_j = p_j - (j-1) 在代码中简化为 pos[i] - i } // 排序取中位数 sort(q.begin(), q.end()); long long mid = q[cnt / 2]; // 计算总距离 long long ans = 0; for (auto x : q) { ans += abs(x - mid); } cout << ans << endl; return 0; }


全剧终

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/26 13:23:53

ScalingLaws-2022-Chinchilla-2:既然Dₒₚₜ/Nₒₚₜ≈20,为什么LLaMA系列用的D/N远大于20【Chinchilla比例:每个参数大约对应20个token】

“每个参数大约对应 20 个 token”(常被叫作 Chinchilla 比例)并不是一条“宇宙定律”。 你看到 LLaMA 系列的 token/参数 比值远大于 20,核心原因是:他们优化的目标、约束条件、以及用来拟合的“最优前沿(frontier)”都变了。 尤其从 Llama 3 开始,论文里甚至明确承认…

作者头像 李华
网站建设 2026/6/30 3:27:34

HTTP Content-Type

HTTP Content-Type 引言 HTTP协议中的Content-Type头字段是Web服务器与客户端之间进行数据交换的重要机制。它定义了服务器发送给客户端数据的类型,允许浏览器或其他客户端应用程序正确地处理和展示这些数据。本文将详细介绍HTTP Content-Type的用途、类型以及在实际应用中的…

作者头像 李华
网站建设 2026/6/29 6:05:34

VSCode 下如何检查 Vue 项目中未使用的依赖?

VSCode 下如何检查 Vue 项目中未使用的依赖&#xff1f; 文章目录 VSCode 下如何检查 Vue 项目中未使用的依赖&#xff1f;1. 使用 depcheck 工具&#xff08;推荐&#xff09;安装和使用&#xff1a;配置&#xff08;可选&#xff09;&#xff1a; 2. 使用 npm-check 工具3. V…

作者头像 李华
网站建设 2026/6/26 13:23:54

SSM计算机毕设之基于ssm的网上手机商城系统基于SSM的手机商城(完整前后端代码+说明文档+LW,调试定制等)

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

作者头像 李华
网站建设 2026/6/26 13:23:55

开题报告 雅韵古诗词系统python爬虫

目录 雅韵古诗词系统Python爬虫简介爬虫技术实现要点数据处理与存储反爬策略应对应用场景扩展 项目技术支持可定制开发之功能亮点源码获取详细视频演示 &#xff1a;文章底部获取博主联系方式&#xff01;同行可合作 雅韵古诗词系统Python爬虫简介 雅韵古诗词系统是一个基于Py…

作者头像 李华
网站建设 2026/6/26 13:23:58

SSM计算机毕设之基于SSM的疫情健康上报管理系统行程上报、健康上报(完整前后端代码+说明文档+LW,调试定制等)

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

作者头像 李华