C. Left and Right Houses

本题链接:Problem - C - Codeforces

题目:

样例:

输入
7
3
101
6
010111
6
011001
3
000
3
110
3
001
4
1100

输出
2
3
2
3
0
1
0

思路:

        根据题目意思。

        寻找一条道路进行分割该字符串,设该道路分割位置为 i  ,使得满足以下条件:

        1、左侧有  \left \lceil \frac{i}{2} \right \rceil  个  0,右侧有 \left \lceil \frac{n - i}{2} \right \rceil 个 1

        2、如果有多个位置满足 条件一,我们就要选择最小的位置 \left | \frac{n}{2} - i \right |.

        读懂意思后,暴力枚举一遍即可。通过前缀和记录每个位置 1 的数量,遍历判断以下即可。

代码详解如下:

#include <iostream>
#include <vector>
#include <queue>
#include <cstring>
#include <algorithm>
#include <unordered_map>
#define endl '\n'
#define int long long
#define YES puts("YES")
#define NO puts("NO")
#define umap unordered_map
#define All(x) x.begin(),x.end()
#pragma GCC optimize(3,"Ofast","inline")
#define IOS std::ios::sync_with_stdio(false),cin.tie(0), cout.tie(0)
using namespace std;
const int N = 2e6 + 10;
inline void solve();

signed main()
{
//	freopen("a.txt", "r", stdin);
	IOS;
	int _t = 1;
	cin >> _t;
	while (_t--)
	{
		solve();
	}
	return 0;
}

inline void solve()
{
	string s;
	int n,ans = -1;
	cin >> n >> s;
	vector<int>sum(n + 10,0);
	
	// 这里是根据前缀和记录相应位置 1 的数量
	// 这里从下标 1 开始记录的前缀和数量,是由于 道路有可能会在最左侧。
	for(int i = 1;i <= n;++i)
	{
		sum[i] = sum[i - 1] + bool(s[i - 1] == '1');
	}
	
	// 开始遍历判断 这里 i <= n 是有可能道路也会在最右侧
	for(int i = 0;i <= n;++i)
	{
		// 如果 道路是 i 的时候,左侧 1 的数量没有超过 i / 2  说明 左侧至少有 i / 2 个 0
		// 并且  右侧 1 的个数  >= (n - i) / 2 那么满足了 条件一
		if((sum[i] << 1) <= i and ((sum[n] - sum[i]) << 1) >= n - i)
		{
			// 这里是判断寻找最小化位置 |n / 2 - i|
			if(abs(n - (i << 1)) < abs(n - (ans << 1))) ans = i;
		}
	}
	cout << ans << endl;
}

最后提交:

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

CSS border边框(理解网页边框制作)

目录 一、border边框介绍 1.概念 2.特点 3.功能 4.应用 二、border边框用法 1.border边框属性 2.边框样式 3.边框宽度 4.边框颜色 5.边框-单独设置各边 6.边框-简写属性 三、border边框属性 四、border边框实例 1.创建带有阴影效果的边框&#xff1a; 2. 创建一个类似标…

安全测试工具箱

工具列表 WebShell管理工具 哥斯拉v4.0.1 冰蝎v3.0Beta_11 冰蝎v4.1 冰蝎魔改v3.3.2 中国蚁剑v2.1.15 天蝎权限管理工具v1.0 Alien权限管理工具v4.0 渗透利器工具 BurpSuite Pro 2023.5.1 DudeSuite Cobalt Strike 4.7美化破解版 XieBro-v3.1 Counter-Strike1.6 YAKIT XRAY…

3d软件哪个适合新手学?3D动画渲染怎么好

在不同的行业领域&#xff0c;3D建模和动画的需求各异&#xff0c;因此所需的3D软件工具也会有所不同。对于刚开始接触3D设计的新手来说&#xff0c;软件的易操作性、丰富的学习资源以及与自己专业领域相关的功能是选择时的重要考虑因素。以下是几款适合初学者入门的3D软件推荐…

【Linux】gdb的简单使用

文章目录 一、gdb是什么&#xff1f;二、使用说明1. 安装2. 注意事项3. 常用调试指令3.1 gdb3.2 l3.3 r3.4 n3.5 s3.6 b3.7 info b3.8 finish3.9 p3.10 set var3.11 c3.12 d breakpoints3.13 d n3.14 disable/enable breakpoints3.15 disable/enable n3.16 info b3.17 display …

【UE C++】打印输出的两种方式

目录 一、UE_LOG 二、调试屏幕信息 一、UE_LOG 定义&#xff1a; UE_LOG 是一个将格式化消息记录到日志文件中的宏。 用法&#xff1a; UE_LOG(LogTemp, Warning, TEXT("Hello World")); 第一个输入参数 LogTemp 是提供给 DEFINE_LOG_CATEGORY 宏的类别名称。你…

饲料颗粒生产利器:全套饲料颗粒机设备揭秘

想要了解饲料颗粒机的全套设备吗&#xff1f;这里为您详细解析&#xff0c;让您对饲料颗粒机的全套配置一目了然&#xff01;饲料颗粒机全套设备&#xff0c;可谓是饲料生产的得力助手。从原料处理到颗粒成型&#xff0c;再到后续的包装存储&#xff0c;这套设备都能轻松应对。…

常见的网站

1.小林coding图解计算机网络、操作系统、计算机组成、数据库&#xff0c;让天下没有难懂的八股文&#xff01;https://xiaolincoding.com/ 2. 弟弟快看 弟弟快看-教程&#xff0c;程序员编程资料站 | DDKK.COM弟弟快看-教程&#xff0c;内容覆盖、Java核心、J2EE框架、ORM框架…

CSS详解(二)

接上篇CSS详解&#xff08;一&#xff09;-CSDN博客 1、网页布局本质 网页布局的本质是通过 CSS 将各种 HTML 元素&#xff08;即“盒子”&#xff09;摆放到页面中合适的位置。这包括设置元素的尺寸、位置、边距、填充、对齐方式、浮动等。这些盒子通过 CSS 的各种布局机制进…

【书生浦语第二期实战营学习笔记作业(四)】

课程文档&#xff1a;https://github.com/InternLM/Tutorial/blob/camp2/xtuner/readme.md 作业文档&#xff1a;https://github.com/InternLM/Tutorial/blob/camp2/xtuner/homework.md 书生浦语第二期实战营学习笔记&作业(四) 1.1、微调理论讲解及 XTuner 介绍 两种Fin…

WMTS服务介绍

WMTS规定使用瓦片矩阵集&#xff08;Tile Matrix Set&#xff09;来表示切割后的地图&#xff0c;如图1所示&#xff0c;不同瓦片矩阵具有不同的比例尺&#xff08;分辨率&#xff09;&#xff0c;每个瓦片矩阵由瓦片矩阵标识符&#xff08;一般为瓦片矩阵的序号&#xff0c;分…

echarts树图-树效果展示

echarts树图实现数据以树的结构展示&#xff0c;其效果如下&#xff1a; 代码如下&#xff1a; const data {name: XXX公司,itemStyle: {color: #00ADD0},children: [{name: 网络主机,itemStyle: {color: #FFA12F},children: [{name: 普通路由器,itemStyle: {color: #604BF…

高可靠性部署系列(2)--- IPS双机热备

高可靠性部署系列(2)--- IPS双机热备 前言网络拓扑设备选型网络规划组网需求配置思路操作步骤结果验证前言 近期有读者留言:“因华为数通模拟器仅能支持USG6000V的防火墙,无法支持别的安全产品,导致很多网络安全的方案和产品功能无法模拟练习,是否有真机操作的实验或者案…

Kimi 大模型支持 Tool Calling 功能,并入驻字节「扣子Coze」开发平台!

Kimi 大模型API 支持 Tool Calling 功能 Kimi 大模型学会「使用工具」了,API 已支持 Tool Calling 功能。开发者们在打造自己的 AI Agents 时,可以让 Kimi 大模型与丰富的自定义外部工具进行交互,打开 AI 应用更大的想象空间。例如,在对话中,当用户问到一家公司的地址时,…

SAP BPC UJKT使用详解

SAP BPC(SAP Business Planning and Consolidation)旨在帮助企业进行财务规划、预算编制、预测分析和财务报告。 一、UJKT是什么&#xff1f; UJKT是什么呢&#xff1f;它是SAP 中的一个TCODE&#xff0c;该事务码的描述为脚本逻辑检测器&#xff0c;对应的源代码程序为&#…

nuxt3 无法创建项目问题

Error: Failed to download template from registry: Failed to download https://raw.githubusercontent.com/nuxt/starter/templates/templates/v3.json: TypeError: fetch failed 错误信息 解决方案 进入windows系统修改hosts文件 C:\Windows\System32\drivers\etc增加以…

IDEA中Vue开发环境搭建

1. IDEA安装Vue.js 文件>设置>插件>搜索Vue.js并安装。 2. 安装Node.js 官网地址&#xff1a;https://nodejs.org 安装包下载地址&#xff1a;https://nodejs.org/en/download 下载并安装&#xff0c;安装时&#xff0c;勾选添加系统变量选项。 # 如果正确安装…

如何批量跟踪京东物流信息

随着电商行业的快速发展&#xff0c;快递业务日益繁忙&#xff0c;无论是商家还是消费者&#xff0c;都需要一种高效、便捷的快递查询工具。快递批量查询高手软件应运而生&#xff0c;以其强大的功能和便捷的操作体验&#xff0c;赢得了广大电商、微商精英们的青睐。 快递批量…

通用计算平台与医用计算平台的差异

1.通用计算平台参考信息 《医疗器械软件注册审查指导原则&#xff08;2022年修订版&#xff09;&#xff08;2022年第9号&#xff09;》中关于“通用计算平台”有说参考《IMDRF/SaMD WG/N10 FINAL: 2013》 2.IMDRF/SaMD WG/N10 FINAL: 2013中关于通用计算平台的说明 3.通用计…

YOLOv8常见水果识别检测系统(yolov8模型,从图像、视频和摄像头三种路径识别检测)

1.效果视频&#xff08;常见水果识别&#xff08;yolov8模型&#xff0c;从图像、视频和摄像头三种路径识别检测&#xff09;_哔哩哔哩_bilibili&#xff09; 资源包含可视化的水果识别检测系统&#xff0c;可识别图片和视频当中出现的六类常见的水果&#xff0c;包括&#xf…

git lab 2.7版本修改密码命令

1.gitlab-rails console -e production Ruby: ruby 2.7.5p203 (2021-11-24 revision f69aeb8314) [x86_64-linux] GitLab: 14.9.0-jh (51fb4a823f6) EE GitLab Shell: 13.24.0 PostgreSQL: 12.7 2根据用户名修改密码 user User.find_by(username: ‘username’) # 替换’use…
最新文章