当前位置: 首页 > news >正文

Swap to Gather-----

C - 烟销日出不见人

 

问题陈述

给定一个长度为 NN 的字符串 SS,由 0 和 1 组成。保证 SS 至少包含一个 1

您可以执行以下操作任意次数(可能为零):

  • 选择一个整数 ii (1≤i≤N−11≤i≤N−1),并交换 SS 的第 ii 个和第 (i+1)(i+1) 个字符。

找出使所有 1 连续所需的最小操作次数。

在这里,只有当存在整数 ll 和 rr (1≤l≤r≤N1≤l≤r≤N) 时,所有 1 被称为连续,且 ii 的第 1 个字符为 SS 当且仅当 l≤i≤rl≤i≤r,否则为 0

约束条件

  • 2≤N≤5×1052≤N≤5×105
  • NN 是一个整数。
  • SS 是一个长度为 NN 的字符串,由 0 和 1 组成。
  • SS 至少包含一个 1

输入

输入通过标准输入以以下格式给出:

NN
SS

输出

打印答案。

示例 1

InputcopyOutputcopy
7
0101001
3

例如,以下三个操作使所有 1 连续:

  • 选择 i=2i=2 并交换第 2 个和第 3 个字符。然后,S=S= 0011001
  • 选择 i=6i=6 并交换第 6 个和第 7 个字符。然后,S=S= 0011010
  • 选择 i=5i=5 并交换第 5 个和第 6 个字符。然后,S=S= 0011100

不可能在两次或更少的交换中做到这一点,因此答案是 33。

示例 2

InputcopyOutputcopy
3
100
0

所有 1 已经是连续的,因此不需要交换。

示例 3

InputcopyOutputcopy
10
0101001001
7

思路: 

假设最左端在第一个点,移动次数最小;
然后从此点循环到最右点-1的个数点,
 每循环一次看有多少点应该向右移,有多少点应该向左移,但他们都向左移动了,所以要计算

代码:

//假设最左端在第一个点,移动次数最小;
//然后从此点循环到最右点-1的个数点,
// 每循环一次看有多少点应该向右移,有多少点应该向左移,但他们都向左移动了,所以要计算
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
char a[600010];
int b[600010];
int  n;
long long sum = 0, max = 0, h = 0, q, i, zong = 0,y=0;
int main() {scanf("%d", &n);for ( i = 0;i < n;i++) {do{scanf("%c", &a[i]);} while (a[i] != '1' && a[i] != '0');}for ( i = 0;i < n;i++) {if (a[i] == '1'&&h==0) {q = i;b[y++] = i;max += i -q -h;h++;}//第一个点else if (a[i] == '1') {b[y++] = i;max+= i -q -h;h++;}//后面的点到据第一个点的h距离}sum = max;for ( i = q+1;i <= b[y-1] - h+1 && zong<y;i++) {while (i+zong >b[zong]&&zong<y ) {zong++;}//有几个要向右移动max = max + 2 * zong - h;//zong个要向右移动,h-zong个不要向右移动但移动了(减去)sum = sum < max ? sum : max;}printf("%lld\n", sum);return 0;
}

相关文章:

Swap to Gather-----

C - 烟销日出不见人 问题陈述 给定一个长度为 NN 的字符串 SS&#xff0c;由 0 和 1 组成。保证 SS 至少包含一个 1。 您可以执行以下操作任意次数&#xff08;可能为零&#xff09;&#xff1a; 选择一个整数 ii (1≤i≤N−11≤i≤N−1)&#xff0c;并交换 SS 的第 ii 个和…...

使用DeepSeek+本地知识库,尝试从0到1搭建高度定制化工作流(自动化篇)

7.5. 配图生成 目的&#xff1a;由于小红书发布文章要求图文格式&#xff0c;因此在生成文案的基础上&#xff0c;我们还需要生成图文搭配文案进行发布。 原实现思路&#xff1a; 起初我打算使用deepseek的文生图模型Janus进行本地部署生成&#xff0c;参考博客&#xff1a;De…...

Python 函数式编程全攻略:从理论到实战的深度解析

本文深入剖析 Python 函数式编程&#xff0c;详细讲解其概念、核心特性&#xff08;迭代器、生成器等&#xff09;、内置函数及相关模块&#xff08;itertools、functools &#xff09;&#xff0c;结合丰富示例与直观图表&#xff0c;助力读者全面掌握函数式编程技巧&#xff…...

Ollama 在 LangChain 中的使用

文章目录 一、langChain 介绍二、环境安装1.依赖库安装2.下载模型 三、基本使用示例1.使用 ChatPromptTemplate 进行对话2.流式输出3.工具调用4.多模态模型调用 四、进阶使用1.使用 ConversationChain 进行对话2.自定义提示模板3.构建一个简单的 RAG 问答系统 五、遇到问题与解…...

使用apt-rdepends制作软件离线deb安装包

使用apt-rdepends制作软件离线deb安装包 除基础软件外&#xff0c;还要获取软件依赖包。 依赖包工具安装 apt-get install apt-rdependsapt-rdepends工具使用 使用apt-rdepends工具&#xff0c;递归方式分析软件依赖&#xff0c;下载软件包本体&#xff0c;和依赖包。制作时…...

根据POD名称生成 三部曲:get、describe、log、exec

#!/bin/bash# 定义颜色变量 RED\033[0;31m GREEN\033[0;32m YELLOW\033[0;33m NC\033[0m # No Color# 检查是否传入 Pod 名称作为参数 if [ -z "$1" ]; then# 如果没有传参&#xff0c;则提示用户输入 Pod 名称echo -e "${YELLOW}Please enter the Pod name:${…...

SQL sever数据导入导出实验

1.创建数据库TCP-H &#xff08;1&#xff09;右键“数据库”&#xff0c;点击“新建数据库”即可 &#xff08;2&#xff09;用sql语言创建&#xff0c;此处以创建数据库DB_test为例&#xff0c;代码如下&#xff1a; use master;go--检查在当前服务器系统中的所有数据里面…...

python环境的yolov11.rknn物体检测

1.首先是我手里生成的一个yolo11的.rknn模型&#xff1a; 2.比对一下yolov5的模型&#xff1a; 2.1 yolov5模型的后期处理&#xff1a; outputs rknn.inference(inputs[img2], data_format[nhwc])np.save(./onnx_yolov5_0.npy, outputs[0])np.save(./onnx_yolov5_1.npy, outpu…...

I2C、SPI、UART

I2C&#xff1a;串口通信&#xff0c;同步&#xff0c;半双工&#xff0c;双线&#xff08;数据线SDA时钟线SCL&#xff09;&#xff0c;最大距离1米到几米 SPI&#xff08;串行外设接口&#xff09;&#xff1a;串口通信&#xff0c;同步&#xff0c;全双工&#xff0c;四线&…...

如何监控和优化 MySQL 中的慢 SQL

如何监控和优化 MySQL 中的慢 SQL 前言一、什么是慢 SQL&#xff1f;二、如何监控慢 SQL&#xff1f;1. 启用慢查询日志启用方法&#xff1a;日志内容&#xff1a; 2. 使用 mysqldumpslow 分析日志 三、如何分析慢 SQL&#xff1f;1. 使用 EXPLAIN 分析执行计划使用方法&#x…...

13-二叉树最小深度-深度优先(DFS)

一、定义 什么是二叉树的最小深度&#xff1f; 二叉树的最小深度是指从根节点到最近的叶子节点的最短路径上的节点数。叶子节点是指没有子节点的节点。 举个例子&#xff1a; 1/ \2 3/ 4 这棵树的最小深度是 2&#xff0c;因为从根节点 1 到叶子节点 3 的路径最短&#x…...

51单片机入门_10_数码管动态显示(数字的使用;简单动态显示;指定值的数码管动态显示)

接上篇的数码管静态显示&#xff0c;以下是接上篇介绍到的动态显示的原理。 动态显示的特点是将所有位数码管的段选线并联在一起&#xff0c;由位选线控制是哪一位数码管有效。选亮数码管采用动态扫描显示。所谓动态扫描显示即轮流向各位数码管送出字形码和相应的位选&#xff…...

代码补全『三重奏』:EverEdit如何用上下文识别+语法感知+智能片段重构你的编码效率!

1 代码自动完成 1.1 应用场景 在编辑文档时&#xff0c;为了提高编辑效率&#xff0c;编辑器一般都会带有自动完成功能&#xff0c;比如&#xff1a;输入括号时自动补全另一半&#xff0c;输入文字时&#xff0c;自动补全剩下的部分。 1.2 使用方法 1.2.1 自动缩进 单击主菜…...

电脑系统损坏,备份文件

一、工具准备 1.U盘&#xff1a;8G以上就够用&#xff0c;注意会格式化U盘&#xff0c;提前备份U盘内容 2.电脑&#xff1a;下载Windows系统并进行启动盘制作 二、Windows启动盘制作 1.微软官网下载启动盘制作工具微软官网下载启动盘制作工具https://www.microsoft.com/zh-c…...

Token Statistics Transformer:线性注意力革命,重新定义Transformer效率天花板

“TOKEN STATISTICS TRANSFORMER: LINEAR-TIME ATTENTION VIA VARIATIONAL RATE REDUCTION” 由Ziyang Wu等人撰写。文章提出一种新型Transformer注意力算子&#xff0c;通过对最大编码率降低&#xff08; M C R 2 MCR^{2} MCR2&#xff09;目标的变分形式进行展开优化得到&…...

Django 5实用指南(二)项目结构与管理

2.1 Django5项目结构概述 当你创建一个新的 Django 项目时&#xff0c;Django 会自动生成一个默认的项目结构。这个结构是根据 Django 的最佳实践来设计的&#xff0c;以便开发者能够清晰地管理和维护项目中的各种组件。理解并管理好这些文件和目录结构是 Django 开发的基础。…...

JAVA监听器(学习自用)

一、什么是监听器 servlet监听器是一种特殊的接口&#xff0c;用于监听特定的事件&#xff08;如请求创建和销毁、会话创建和销毁、上下文的初始化和销毁&#xff09;。 当Web应用程序中反生特定事件时&#xff0c;Servlet容器就会自动调用监听器中相应的方法来处理这些事件。…...

Ubuntu下mysql主从复制搭建

本文介绍mysql 8.4主从集群的搭建&#xff0c;从单个机器安装到集群的配置&#xff0c;整体走了一遍&#xff0c;希望对大家有帮助。mysql 8.4和之前的版本命令上有些变化&#xff0c;大家用来参考。 0、环境 ubuntu&#xff1a; 22.04mysql&#xff1a;8.4 1、安装mysql 1…...

VirtualBox 中使用 桥接网卡 并设置 MAC 地址

在 VirtualBox 中使用 桥接网卡 并设置 MAC 地址&#xff0c;可以按照以下步骤操作&#xff1a; 步骤 1&#xff1a;设置桥接网卡 打开 VirtualBox&#xff0c;选择你的虚拟机&#xff0c;点击 “设置” (Settings)。进入 “网络” (Network) 选项卡。在 “适配器 1” (Adapt…...

Ubuntu 20 掉显卡驱动的解决办法

目录 问题背景解决办法Step1&#xff1a;首先查看当前linux内核Step2&#xff1a;重启Step3&#xff1a;进入ubuntu advanced &#xff08;即高级选项&#xff09;Step4&#xff1a;查看有哪些linux内核Step5&#xff1a;如果滚回老板kernel还是没有驱动&#xff0c;就找到驱动…...

CMake基础:构建流程详解

目录 1.CMake构建过程的基本流程 2.CMake构建的具体步骤 2.1.创建构建目录 2.2.使用 CMake 生成构建文件 2.3.编译和构建 2.4.清理构建文件 2.5.重新配置和构建 3.跨平台构建示例 4.工具链与交叉编译 5.CMake构建后的项目结构解析 5.1.CMake构建后的目录结构 5.2.构…...

基于Uniapp开发HarmonyOS 5.0旅游应用技术实践

一、技术选型背景 1.跨平台优势 Uniapp采用Vue.js框架&#xff0c;支持"一次开发&#xff0c;多端部署"&#xff0c;可同步生成HarmonyOS、iOS、Android等多平台应用。 2.鸿蒙特性融合 HarmonyOS 5.0的分布式能力与原子化服务&#xff0c;为旅游应用带来&#xf…...

学校招生小程序源码介绍

基于ThinkPHPFastAdminUniApp开发的学校招生小程序源码&#xff0c;专为学校招生场景量身打造&#xff0c;功能实用且操作便捷。 从技术架构来看&#xff0c;ThinkPHP提供稳定可靠的后台服务&#xff0c;FastAdmin加速开发流程&#xff0c;UniApp则保障小程序在多端有良好的兼…...

RNN避坑指南:从数学推导到LSTM/GRU工业级部署实战流程

本文较长&#xff0c;建议点赞收藏&#xff0c;以免遗失。更多AI大模型应用开发学习视频及资料&#xff0c;尽在聚客AI学院。 本文全面剖析RNN核心原理&#xff0c;深入讲解梯度消失/爆炸问题&#xff0c;并通过LSTM/GRU结构实现解决方案&#xff0c;提供时间序列预测和文本生成…...

Element Plus 表单(el-form)中关于正整数输入的校验规则

目录 1 单个正整数输入1.1 模板1.2 校验规则 2 两个正整数输入&#xff08;联动&#xff09;2.1 模板2.2 校验规则2.3 CSS 1 单个正整数输入 1.1 模板 <el-formref"formRef":model"formData":rules"formRules"label-width"150px"…...

uniapp手机号一键登录保姆级教程(包含前端和后端)

目录 前置条件创建uniapp项目并关联uniClound云空间开启一键登录模块并开通一键登录服务编写云函数并上传部署获取手机号流程(第一种) 前端直接调用云函数获取手机号&#xff08;第三种&#xff09;后台调用云函数获取手机号 错误码常见问题 前置条件 手机安装有sim卡手机开启…...

作为测试我们应该关注redis哪些方面

1、功能测试 数据结构操作&#xff1a;验证字符串、列表、哈希、集合和有序的基本操作是否正确 持久化&#xff1a;测试aof和aof持久化机制&#xff0c;确保数据在开启后正确恢复。 事务&#xff1a;检查事务的原子性和回滚机制。 发布订阅&#xff1a;确保消息正确传递。 2、性…...

实战三:开发网页端界面完成黑白视频转为彩色视频

​一、需求描述 设计一个简单的视频上色应用&#xff0c;用户可以通过网页界面上传黑白视频&#xff0c;系统会自动将其转换为彩色视频。整个过程对用户来说非常简单直观&#xff0c;不需要了解技术细节。 效果图 ​二、实现思路 总体思路&#xff1a; 用户通过Gradio界面上…...

uniapp 集成腾讯云 IM 富媒体消息(地理位置/文件)

UniApp 集成腾讯云 IM 富媒体消息全攻略&#xff08;地理位置/文件&#xff09; 一、功能实现原理 腾讯云 IM 通过 消息扩展机制 支持富媒体类型&#xff0c;核心实现方式&#xff1a; 标准消息类型&#xff1a;直接使用 SDK 内置类型&#xff08;文件、图片等&#xff09;自…...

pycharm 设置环境出错

pycharm 设置环境出错 pycharm 新建项目&#xff0c;设置虚拟环境&#xff0c;出错 pycharm 出错 Cannot open Local Failed to start [powershell.exe, -NoExit, -ExecutionPolicy, Bypass, -File, C:\Program Files\JetBrains\PyCharm 2024.1.3\plugins\terminal\shell-int…...