《蓝桥杯每日一题》递推·AcWing 3777. 砖块
1.题目描述
n 个砖块排成一排,从左到右编号依次为 1∼n。
每个砖块要么是黑色的,要么是白色的。
现在你可以进行以下操作若干次(可以是 0 次):
选择两个相邻的砖块,反转它们的颜色。(黑变白,白变黑)
你的目标是通过不超过 3n 次操作,将所有砖块的颜色变得一致。
输入格式
第一行包含整数 T,表示共有 T组测试数据。
每组数据第一行包含一个整数 n。
第二行包含一个长度为 n 的字符串 s。其中的每个字符都是 W 或 B,如果第 i 个字符是 W,则表示第 i 号砖块是白色的,如果第 i 个字符是 B,则表示第 i 个砖块是黑色的。
输出格式
每组数据,如果无解则输出一行 −1。
否则,首先输出一行 k,表示需要的操作次数。
如果 k>0,则还需再输出一行 k 个整数,p1,p2,…,pk。其中 pi 表示第 i次操作,选中的砖块为 pi 和 pi+1号砖块。
如果方案不唯一,则输出任意合理方案即可。
数据范围
1≤T≤10,
2≤n≤200。
输入样例:
4
8
BWWWWWWB
4
BWBB
5
WWWWW
3
BWB
输出样例:
3
6 2 4
-1
0
2
2 1
2.思路分析
这个题的结果不唯一,可以全黑也可以全白,如果无解则输出-1
因为每次反转,都是反转第i位和第i+1位,那么只需遍历到n-1位,
首先将每一位全部反转为白色,如果最后一位与第一位都是白色,那么成功
其次将每一位全部反转为黑色,如果最后一位与第一位都是黑色,那么成功
判断的代码用&&连接,前面一个判断成功就不会执行后面一个
3.Ac代码
import java.io.*;
import java.util.ArrayList;public class Main {public static void main(String[] args) throws IOException {BufferedReader br = new BufferedReader(new InputStreamReader(System.in));int t = Integer.parseInt(br.readLine());while (t-->0){int n= Integer.parseInt(br.readLine());String s=br.readLine();if(!check(s,'W') &&!check(s,'B')) System.out.println("-1");}}static char []ss;private static boolean check(String s, char x) {ss=s.toCharArray();ArrayList<Integer> arr=new ArrayList<>();int n=ss.length;for(int i=0;i+1<n;i++){if(ss[i]!=x) {update(i);update(i+1);arr.add(i);}}if(ss[n-1]!=ss[0]) return false;System.out.println(arr.size());for (Integer a : arr) {System.out.print(a+1+" "); //操作下标从1 开始}if(arr.size()!=0) System.out.println();return true;}private static void update(int i) {if(ss[i]=='W'){ss[i]='B';}else ss[i]='W';}
}
感谢你能看完, 如有错误欢迎评论指正,有好的思路可以交流一波,如果对你有帮助的话,点个赞支持下
相关文章:
《蓝桥杯每日一题》递推·AcWing 3777. 砖块
1.题目描述n 个砖块排成一排,从左到右编号依次为 1∼n。每个砖块要么是黑色的,要么是白色的。现在你可以进行以下操作若干次(可以是 0 次):选择两个相邻的砖块,反转它们的颜色。(黑变白…...
mysql读写分离(maxscale)
1. 环境架构 需要三台服务器。192.168.2.10(master)192.168.2.20(slave)192.168.2.30(maxscale) 2. 部署mysql主从同步 mysql主从同步可以参考mysql主从同步 3. 部署maxscale服务 MaxScale中间件软件 …...
第八章 - 数据分组( group by , having , select语句顺序)
第八章 - 数据分组 group by数据分组过滤分组 having分组排序groub by语句的一些规定select语句顺序数据分组 在使用group by进行分组时,一般都会配合聚合函数一起使用,实现统计数据的功能。比如下面例子,需要按性别计算人数。按性别进行分组…...
Git(GitHub,Gitee 码云,GitLab)详细讲解
目录第一章 Git 概述1.1 何为版本控制1.2 为什么需要版本控制1.3 版本控制工具1.4 Git 简史1.5 Git 工作机制1.6 Git 和代码托管中心第二章 Git 安装第三章 Git 常用命令3.1 设置用户签名3.2 初始化本地库3.3 查看本地库状态3.3.1 首次查看(工作区没有任何文件&…...
策略模式(Strategy Pattern)
编写鸭子项目,具体要求如下: 1) 有各种鸭子(比如 野鸭、北京鸭,水鸭等,鸭子有各种行为,比如 叫,飞行等) 2)显示鸭子的信息 传统方案解决鸭子问题 1࿰…...
《Qt6开发及实例》6-2 Qt6基础图形的绘制
目录 一、绘图框架设计 二、绘图区的实现 2.1 PaintArea类 2.2 PaintArea类讲解 三、主窗口的实现 3.1 MainWidget类 3.2 MainWidget类讲解 3.3 槽函数编写 3.5 其他内容 一、绘图框架设计 界面 两个类 二、绘图区的实现 2.1 PaintArea类 paintarea.h #ifndef…...
LeetCode 382. 链表随机节点
原题链接 难度:middle\color{orange}{middle}middle 题目描述 给你一个单链表,随机选择链表的一个节点,并返回相应的节点值。每个节点 被选中的概率一样 。 实现 SolutionSolutionSolution 类: Solution(ListNodehead)Solution…...
iOS开发AppleDeveloper中给别人授权开发者权限后,对方一直显示不了我的开发账号team
在iOS开发经常出现多人协作开发的情况。这时我们通常要发邮件邀请别的用户为开发者或者app管理就可以开发我们自己的项目了。但是这次我给别人授权开发者权限后,发现别人权限中没有证书相关权限如图:并且别人登录该账号后,在xcode中只有一个看…...
FreeRTOS数据类型和编程规范
目录 数据类型 变量名 函数名 宏的名 数据类型 每个移植的版本都含有自己的portmacro.h头文件,里面定义了2个数据类型 TickType_t FreeRTOS配置了一个周期性的时钟中断:Tick Interrupt每发生一次中断,中断次数累加,这被称为t…...
【python知识】win10下如何用python将网页转成pdf文件
一、说明 本篇记录一个自己享用的简单工具。在大量阅读网上文章中,常常遇到一个专题对应多篇文章,用浏览器的收藏根本不够。能否见到一篇文章具有搜藏价值,就转到线下,以备日后慢慢消化吸收。这里终于找到一个办法,将在…...
C语言常见关键字
写在前面 这个博客是结合C语言深度解剖这本书和我以前学的知识综合而成的,我希望可以更见详细的谈一下C语言的关键字,内容有点多,有错误还请斧正. 常见关键字 下面我们说下C语言的关键字,所谓的关键字是指具有特定功能的单词,我们可以使用关键字来帮助我们完成不同的事物.C语…...
【MT7628】固件开发-SDK4320添加MT7612E WiFi驱动操作说明
解压5G WiFi MT7612E驱动1.1解压指令 tar -xvf MT76x2E_MT7620_LinuxAP_V3.0.4.0_P2_DPA_20160308.tar.bz2 1.2解压之后会出现以下两个目录 rlt_wifi rlt_wifi_ap 1.3将解压后的文件拷贝到系统下 拷贝路径 RT288x_SDK/source/linux-2.6.36.x/drivers/net/wireless 内核中打开驱…...
如何从手工测试进阶自动化测试?阿里10年测开经验分享...
随着行业的竞争加剧,互联网产品迭代速度越来越快,QA 与测试工程师都需要在越来越短的测试周期内充分保证质量。可是,App 测试面临着很多挑战,比如多端发布、多版本发布、多机型发布等等,导致了手工测试很难完全胜任。因…...
C++复习笔记11
1. vector是表示可变大小数组的序列容器。 2. 就像数组一样,vector也采用的连续存储空间来存储元素。也就是意味着可以采用下标对vector的元素进行访问,和数组一样高效。但是又不像数组,它的大小是可以动态改变的,而且它的大小会被…...
【MT7628】固件开发-SDK4320添加MT7628 WiFi驱动操作说明
解压2.4G WiFi MT7628驱动1.1解压指令 tar -xvf MT7628_LinuxAP_V4.1.0.0_DPA_20160310.tar.bz2 1.2解压之后会出现以下两个目录 mt_wifi mt_wifi_ap 1.3将解压后的文件拷贝到系统下 拷贝路径 RT288x_SDK/source/linux-2.6.36.x/drivers/net/wireless 内核中打开驱动编译修改R…...
C#开发的OpenRA游戏加载界面的实现
C#开发的OpenRA游戏加载界面的实现 游戏的UI是一个游戏必备, 但是游戏的UI都是自己处理的,不能使用像Windows自带的UI。 这样游戏的UI,其实也是使用游戏的方式来显示的, 只不过使用了低帧率的方式来显示。 比如OpenRA游戏界面,就会显示如下: 游戏的界面有很多,先从一个简…...
渲染农场优势是什么_云渲染农场怎么用?
在回答渲染农场的优势这个问题之前,我先申明一下本文中提到的渲染农场/云渲染平台/云渲染农场,都特指CG领域内的专业3D渲染平台,有一些文章会强调这个叫法的区别,但是业内一般都不会分这么细,所以也就不赘述了。渲染农…...
SoapUI、Jmeter、Postman三种接口测试工具的比较分析
目录 前言 1. 用例组织方式 2. 支持的接口类型与测试类型 3. 配置不同接口类型 4. 自定义变量以及变量的作用域 5. 数据源、生成器,进行参数化 6. 流程控制 7. 结果解析、展示 8. 断言 9. 脚本扩展能力 10. 团队协作 总结 重点:配…...
Python内置函数 — sort,sorted
1、sort 列表的属性方法,对列表进行排序,默认升序,返回None值。 源码注释: """ Sort the list in ascending order and return None.The sort is in-place (i.e. the list itself is modified) and stable (i.e.…...
mysql事务隔离级别
mysql锁机制及原理1.隔离级别2.实践2.1查看事务隔离级别2.2 设置隔离级别2.3 不可重复读2.4 幻读3.幻读怎么解决3.1 Record Lock3.2 Gap Lock3.3 Next-Key Lock引用:https://blog.csdn.net/xinyuan_java/article/details/1284932051.隔离级别 SERIALIZABLE(序列化)…...
leetcode 困难题 1505. 最多 K 次交换相邻数位后得到的最小整数
Problem: 1505. 最多 K 次交换相邻数位后得到的最小整数 从左到右遍历字符串的每个索引,对每个索引i,向后查找k窗口内的最小数字,右边界是min(n, ik1),删去这个最小数字,然后将这个最小数字插入到当前索引,…...
重磅:中科院分区退出历史!| 附2026年《新锐期刊分区表》完整版EXCEL.
3月24日,2026版《新锐期刊分区表》正式发布,随后引起了广泛的关注和争议。议论最多的,竟然是《新锐期刊分区表》到底是不是“中科院分区表”?3 月 25 日,公众号“新锐学术”发布《“走进新锐分区”专题:即将…...
前端微前端架构:别再把所有功能都放在一个应用里了
前端微前端架构:别再把所有功能都放在一个应用里了 各位前端同行,咱们今天聊聊前端微前端架构。别告诉我你还在把所有功能都放在一个应用里,那感觉就像在一个房间里放了所有家具。 为什么你需要微前端架构 最近看到一个项目,单页应…...
OFA视觉蕴含模型部署教程:日志分级输出与推理过程可追溯性设计
OFA视觉蕴含模型部署教程:日志分级输出与推理过程可追溯性设计 1. 镜像简介与核心价值 今天咱们来聊聊一个特别实用的AI模型——OFA视觉蕴含模型。简单来说,它能看懂图片,然后判断你描述的两句话,跟这张图片是什么关系。 想象一…...
Canvas动画实战:用requestAnimationFrame打造会飘动的云朵与彩虹
1. Canvas动画基础入门 第一次接触Canvas动画时,我被它强大的绘图能力惊艳到了。记得当时为了做一个简单的太阳升起动画,硬是用setInterval写了上百行代码,结果动画卡得像幻灯片一样。后来才发现,原来浏览器早就为我们准备了更专业…...
YOLOv5实战:如何用Inner-IoU提升小目标检测效果(附完整代码)
YOLOv5实战:用Inner-IoU解决小目标检测痛点的工程指南 无人机镜头下的蚂蚁、CT扫描中的微小结节、卫星图像里的车辆——当目标尺寸小于3232像素时,传统检测器的性能往往会断崖式下跌。我们团队在医疗影像分析项目中就曾遇到这样的困境:常规Io…...
vLLM-v0.17.1实战案例:为AI编程助手提供毫秒级代码补全服务
vLLM-v0.17.1实战案例:为AI编程助手提供毫秒级代码补全服务 1. vLLM框架简介 vLLM是一个专为大型语言模型(LLM)设计的高性能推理和服务库,其核心目标是提供极致的推理速度和易用性。这个项目最初由加州大学伯克利分校的天空计算实验室开发,…...
Qwen3.5-9B+OpenClaw组合方案:3类高性价比自动化场景实测
Qwen3.5-9BOpenClaw组合方案:3类高性价比自动化场景实测 1. 为什么选择这个组合? 去年夏天,我花了整整两周时间在本地部署各种开源大模型,试图找到一个既能在预算内运行、又能稳定执行自动化任务的方案。经过反复测试࿰…...
力扣高频经典双题解:接雨水 + 无重复最长子串(思路 + 满分代码)
接雨水、无重复字符最长子串是面试高频、算法入门必刷的经典题,一道考动态规划预处理,一道考滑动窗口,都是数组 / 字符串题型里的核心套路。本篇把两道题的思路讲透、代码写清,新手也能一遍看懂,刷题效率直接拉满&…...
SpeedyStepper Forked:嵌入式步进电机硬实时控制库解析
1. SpeedyStepper Forked:面向嵌入式实时控制的高性能步进电机驱动库深度解析1.1 库定位与工程价值SpeedyStepper Forked 是一个专为嵌入式平台(尤其是基于Arduino生态的MCU)设计的轻量级、高精度步进电机运动控制库。其核心目标并非提供图形…...
