C. Balanced Bitstring(思维+子字符串规律)

news2025/7/23 15:37:39

Problem - 1405C - Codeforces

 

一个比特串是一个只由0和1字符组成的字符串,如果这个比特串的每个大小为k的子串都有相同数量的0和1字符(各为k2),那么这个比特串就被称为k平衡的。

给你一个整数k和一个只由0,1,和?组成的字符串s. 你需要确定是否可以通过将s中的每一个? 字符替换为0或1来构成一个k平衡的位串.

如果一个字符串a可以通过从b中删除几个(可能是0或全部)字符的开头和几个(可能是0或全部)字符的结尾而得到,那么这个字符串就是一个字符串b的子串。

输入
每个测试包含多个测试案例。第一行包含测试用例的数量t(1≤t≤104)。测试用例的描述如下。

每个测试用例的第一行包含两个整数n和k(2≤k≤n≤3⋅105,k为偶数)--字符串的长度和平衡位串的参数。

下一行包含字符串s(|s|=n)。给定s只由0、1和?

保证所有测试案例的n之和不超过3⋅105。

输出
对于每个测试用例,如果我们能用0或1替换s中的每个?,从而使产生的位串是k平衡的,则打印YES,如果不可能,则打印NO。

例子
input
9
6 4
100110
3 2
1?1
3 2
1?0
4 4
????
7 4
1?0??1?
10 10
11??11??11
4 2
1??1
4 4
?0?0
6 2
????00
output

是的
没有


没有
没有


注意
对于第一个测试案例,该字符串已经是一个4平衡的位串。

对于第二个测试案例,该字符串可以转化为101。

对于第四个测试用例,该字符串可以转化为0110。

对于第五个测试案例,该字符串可以转化为1100110。

题解:
本题要求长度为k的子串包含的01的数目相同,

那么假如前k个符合条件,那么对于2~k+1的子串

第a[k+1]应该等于a[1],

因为如果前k个符合条件,现在第一个可能是0或1,少了一个,后面肯定要加上,

所以有了一个规律a[i%k] == a[i]

#include<iostream>
#include<algorithm>
#include<map>
#include<queue>
#include<vector>
#include<cstring>
using namespace std;
char a[300050]; 
void solve()
{
	int n,k;
	cin >> n >> k;
	cin >> a;
	int f = 0;
	for(int i = k;i < n;i++)
	{
		if(a[i] == '?'||a[i%k] == a[i])
		{
			continue;
		}
		if(a[i%k] == '?')
		{
			a[i%k] = a[i];
		}
		else
		{
			f = 1;
			break;
		}
	}
	int x = 0,y = 0;
	for(int i = 0;i < k;i++)
	{
		if(a[i] == '1')
		{
			x++;
		}
		else if(a[i] == '0')
		{
			y++;
		}
	}
	if(x > k/2||y > k/2||f)
	{
		cout<<"NO\n"; 
	}
	else
	{
		cout<<"YES\n";
	}

}
int main()
{
	int t = 1;
	cin >> t;
	while(t--)
	{
		solve();
	}
}
//
//

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

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

相关文章

来自BAT的一份Java高级开发岗面试指南:金三银四必定面试无忧

作为一名即将求职的程序员&#xff0c;你的就业机会和风口会出现在哪里&#xff1f;在这种新环境下&#xff0c;工作应该选择大厂还是小公司&#xff1f;已有几年工作经验的老兵&#xff0c;又应该如何保持和提升自身竞争力&#xff0c;转被动为主动&#xff1f; 就目前大环境…

VMware16虚拟机添加硬盘(磁盘)和挂载硬盘(磁盘)

记录&#xff1a;317 场景&#xff1a;在VMware16虚拟机&#xff0c;安装了CentOS 7.9操作系统场景下&#xff0c;添加硬盘(磁盘)和挂载硬盘(磁盘)。 版本&#xff1a; 操作系统&#xff1a;CentOS 7.9 1.机器配置 机器名称&#xff1a;B200&#xff1b;主机名称&#xff…

企业级数据中台应用架构和技术架构

一、什么是数据中台 数据中台是一种将企业沉睡的数据变成数据资产&#xff0c;持续使用数据、产生智能、为业务服务&#xff0c;从而实现数据价值变现的系统和机制。通过数据中台提供的方法和运行机制&#xff0c;形成汇聚整合、提纯加工、建模处理、算法学习&#xff0c;并以…

【路径规划-VRP问题】基于遗传算法求解出租车网约车接送客车辆路径规划问题附matlab代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;修心和技术同步精进&#xff0c;matlab项目合作可私信。 &#x1f34e;个人主页&#xff1a;Matlab科研工作室 &#x1f34a;个人信条&#xff1a;格物致知。 更多Matlab仿真内容点击&#x1f447; 智能优化算法 …

好未来(TAL)喜忧参半的前景

来源&#xff1a;猛兽财经 作者&#xff1a;猛兽财经 猛兽财经认为好未来&#xff08;TAL&#xff09;的前景喜忧参半。一方面&#xff0c;好未来已成功转向了新业务领域&#xff0c;如内容解决方案和学习技术解决方案&#xff0c;其新的直播电商业务也有巨大的增长潜力。另一…

npm nvm cnpm常见指令

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录前言一、nvm开头操作1.安装nodejs2.查看当前正在使用的版本3.切换使用的nodejs版本二、npm开头的操作1.全局安装cnpm2.查看npm的版本4.运行项目5.安装路由5.1 vue3 的…

FRNet:Feature Reconstruction Network for RGB-D Indoor Scene Parsing

1&#xff1a;铺垫 多数场景解析方法使用weak distinction和大的跨度&#xff0c;效果不是最好的。为了解决这个问题&#xff0c;作者使用了内在的多层跨模态数据和反向传播去构建一个新的特征重建网络FRNet&#xff0c;具体来说&#xff0c;encoder为了获得自上而下的逐层特征…

居民消费价格指数变化新鲜出炉,这类商品同比涨幅最大

对比分析2022年10月份全国居民消费价格数据发现&#xff0c;今年10 月份CPI 同比增2.5%&#xff0c;维持近8个月新高&#xff1b; PPI 同比增3.3%&#xff0c;同比涨幅较上个月回落 2.2 个百分点。 ​ | CPI同比增2.5%&#xff0c;维持近8个月新高 全国居民消费价格涨跌幅情…

C++之函数模板、类模板、模板的特化

1.什么是模板&#xff1f; 模板是c的一种特性&#xff0c;允许函数或者类&#xff08;对象&#xff09;通过泛型&#xff08;generic types&#xff09;的形式表现或者运行模板可以使得函数或类在对应不同的类型&#xff08;types&#xff09;的时候正常工作&#xff0c;而无需…

数组的substring方法和substr方法

数组的substring()方法、substr()方法都可以用于字符串截取 substr(start,length) 从指定下标开始截取指定长度的字符串&#xff0c;不改变字符串 start 必要&#xff0c;开始下标&#xff0c;若是负数&#xff0c;则从字符串尾部开始截取length 可选&#xff0c;若省略&…

2022年下半年系统架构师考试题

很多题目想不起来了&#xff0c;欢迎大佬们补充 综合知识 SASS、PASS 、IASS分别代表什么&#xff08;区别是什么&#xff09; A.软件即服务&#xff0c;平台即服务&#xff0c;基础设施即服务 目前Gpu的最高峰值是多少 A.100TFlops B.50TFlops C.10TFlops D.1TFlops Ai芯片…

antd常用组件 select,form等

参考代码为typescriptreact 树选择 TreeSelect 下拉选项的父子节点选中不相关 import { TreeSelect } from antd;<TreeSelectshowSearchstyle{{ width: 100% }}treeData{yyIndustryOptions} // treeNodes 数据dropdownStyle{{ maxHeight: 400, overflow: auto }} //下拉…

基于Python仓库管理系统的设计与实现django框架

摘 要 随着信息化时代的到来&#xff0c;系统管理都趋向于智能化、系统化&#xff0c;仓库管理系统也不例外&#xff0c;但目前国内的有些公司仍然都使用人工管理&#xff0c;公司规模越来越大&#xff0c;同时信息量也越来越庞大&#xff0c;人工管理显然已无法应对时代的变化…

Django 中间件

文章目录Django中间件默认中间件源码分析自定义中间件process_request&#xff08;掌握&#xff09;process_response&#xff08;掌握&#xff09;process_view(了解)process_template_response(了解)process_execption(了解)Django中间件 只要是涉及到全局相关的功能都可以使…

python基于PHP+MySQL的在线汽车租赁管理系统

随着时代的发展,汽车已经成为当代人们代步的主要工具。但是很多时候人们并没有购车的念头,这个时候就出现了一种新的行业,就是汽车租赁行业,这样不仅可以解决用车的需求,而且可以节省大量的购车成本,为了能够方便用户进行汽车租赁我们开发了PHP在线汽车租赁管理系统,本系统分为…

软件版本号详解

我们现在的生活离不开软件&#xff0c;版本号一般不会引起大家的关注&#xff0c;但是一旦软件出现了Bug或者其他问题&#xff0c;这个时候&#xff0c;软件的提供方都会让用户提供其软件的版本号。软件版本号长什么样呢&#xff1f;上面这张截图是我们常用的手机APP&#xff0…

关于git你应该知道的一些东西

前言 好好写代码&#xff0c;好好的反思踩过的坑&#xff0c;然后尽量不要给别人挖坑。这是我对自己&#xff0c;以及每个刚入行或即将的小伙伴的建议。一个软件工程项目&#xff0c;是一个系统性极强且较为复杂的工作&#xff0c;会有很多人参与到这个工作中来&#xff0c;如何…

Yarn pengding任务的原因之一:Reserved

一、背景 系统&#xff1a;linux centos7.4 Yarn&#xff1a;3.0.0-cdh6.3.2 二、现象 业务方通知&#xff0c;大部分使用yarn的任务都长时间处于执行中的状态。 三、问题排查 查看yarn的ui发现&#xff0c;memory reserved的值&#xff0c;已经和memory total等值了。 然…

Unity内实现无卡顿取图像推流/截屏等功能

文章目录 一、Unity提供的ScreenCapture取图像接口二、我们一个一个看API:三、Unity日本大神keijiro还提供了一种异步截图的方案,完整代码如下:一、Unity提供的ScreenCapture取图像接口 众所周知,Unity提供了ScreenCapture API用来获取引擎最终渲染到屏幕的图像: 二、我…

深度学习入门(三十五)计算性能 编译器和解释器

深度学习入门&#xff08;三十五&#xff09;计算性能 编译器和解释器前言计算性能——编译器和解释器教材1 符号式编程2 混合式编程3 Sequential的混合式编程3.1 通过混合式编程加速3.2 序列化4 小结前言 核心内容来自博客链接1博客连接2希望大家多多支持作者 本文记录用&…