如何用Notion管理AI测试项目?2026年模板

核心内容摘要

iOS 15-16设备iCloud激活锁解除技术解析:原理、工具与实践指南
计算机毕业设计springboot微信小程序的治安处罚法条查询系统 基于SpringBoot+微信小程序的公安行政处罚条款智能检索平台 融合SpringBoot与微信小程的治安处罚法律条文移动查询系统

Linux驱动probe函数全解析:以蜂鸣器驱动为例,吃透初始化流程与规范

先看题目题目分析我们有一个长度为的二进制字符串包含字符0和1至少有一个1。

可以交换相邻字符每次交换算一次操作。

目标让所有1连续排列形成一段连续的1。

求最少操作次数思路分析关键观察最终1聚集到连续的一段但我们可以自由选择这个连续段的位置。

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

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

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

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

转化为数学模型假设最终1的连续段是从位置 k 到位置 km−1其中 m 是1的个数。

设原字符串中1的位置下标从 1 开始是p1,p2,…,pm最终连续段的位置是k,k1,…,km−1那么把第 j 个1从 pj​ 移动到 kj−1 需要的交换次数就是总操作次数为我们要选择一个整数 k 使得这个和最小。

化简令 qjpj−(j−

那么上式变成其中 qj​ 是已知的常数因为 pj​ 已知。

所以问题转化为已知数组 q1,q2,…,qm找一个整数 k 使最小。

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

因此先找出所有1的位置 p1,p2,…,pm。

计算 qjpj−(j−

对 q 数组排序取中位数。

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

正解#include bits/stdc.h using namespace std; int main() { ios::sync_with_stdio(false); cin.tie(

; int n; string s; cin n s; // 收集所有1的位置 vectorint pos; for (int i 0; i n; i) { if (s[i]

{ pos.push_back(i

; // 转成1-based } } int cnt pos.size(); // 1的个数 // 计算q数组 vectorlong long q(cnt); for (int i 0; i cnt; i) { q[i] pos[i] - i; // 公式推导q_j p_j - (j-

在代码中简化为 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; }全剧终

蓝莓视频-蓝莓视频应用

百度百家号客服电话人工服务

123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123