【蓝桥集训】第五天——递推

news2024/11/13 16:31:13

作者:指针不指南吗
专栏:Acwing 蓝桥集训每日一题

🐾或许会很慢,但是不可以停下来🐾

文章目录

  • 1.砖块

递推算法是一种简单的算法,通过已知条件,利用特定关系得出中间推论,逐步递推,直到得到结果为止

1.砖块

n 个砖块排成一排,从左到右编号依次为 1∼n。

每个砖块要么是黑色的,要么是白色的。

现在你可以进行以下操作若干次(可以是 00 次):

选择两个相邻的砖块,反转它们的颜色。(黑变白,白变黑)

你的目标是通过不超过 3n 次操作,将所有砖块的颜色变得一致。

输入格式

第一行包含整数 T,表示共有 T 组测试数据。

每组数据第一行包含一个整数 n。

第二行包含一个长度为 n 的字符串 s。其中的每个字符都是 WB,如果第 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
  • 思路

    • 最后的结果可以分成两种情况:全白或者是全黑;

    • 我们操作的位置只有 n-1 种,所以不用考虑 3n 的情况;

    • 每个位置反转两次,相当于没有反转,所以我们只要考虑每个位置要不要操作就可以(0或者1);

    • 如果 i 位置和我们想要的颜色不同,则操作,否则,不,所以说每个位置的操作都是确定的;

    把每一个位置递推一下,到最后一个

    • 最后一个在前一个位置操作或者是没有操作过后,不能操作:判断一下,如果与第一个相同,则说明符合题意。
  • 代码实现

    #include<bits/stdc++.h>
    using namespace std;
    
    int n;
    
    void update(char &a)
    {
    	if(a=='W') a='B';
    	else a='W';
    }
    
    bool check(string s,char x)
    {
    	vector<int> ans; //数组 ans 存操作的位置 
    	for(int i=0;i+1<n;i++){  
    		if(s[i]!=x){  //如果不是我们想要的,则更新
    			update(s[i]);
    			update(s[i+1]);
    			ans.push_back(i);  //把操作位置放入数组中
    		}
    	}
    	if(s.back()!=s[0]) return false;  //最后一个无法改变,如果与前面不同,则不能实现
    	cout<<ans.size()<<endl;
    	for(auto i:ans) cout<<i+1<<' ';  //输出结果
    	return true;
    }
    
    int main()
    {
    	int T;
    	cin>>T;
    	while(T--){
    		string s;
    		cin>>n>>s;
    		if(!check(s,'W')&&!check(s,'B')) puts("-1");  //如果全白或者是全黑都不可以,则输出 -1;
    	} 
    	return 0;
     } 
    

Alt

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

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

相关文章

CSS样式

CSS Css的优势&#xff1a; 内容和表现分离网页结构表现统一&#xff0c;可以实现复用样式丰富建议使用独立的html的css CSS的导入方式 第一种导入方式 &#xff1a;行内样式 <!DOCTYPE html> <html lang"en"> <head><meta charset"U…

清洁级动物(CL)实验室设计SICOLAB

清洁级动物&#xff08;CL&#xff09;实验室设计清洁级动物&#xff08;CL&#xff09;实验室设计有哪些内容&#xff1f;工艺流程是如何&#xff1f;功能房间的划分清洁级动物实验室&#xff08;CL实验室&#xff09;是进行高洁净度动物实验的专门场所&#xff0c;需要满足一…

无水印的电脑录屏软件,推荐这3款软件,2023年新版

很多小伙伴最近喜欢在私信中询问小编&#xff0c;都已经是2023年了&#xff0c;有没有一款特别好用无水印的电脑录屏软件。当然有啦&#xff01;今天小编就应各位小伙伴的要求&#xff0c;在这里分享3款好用的无水印电脑录屏软件&#xff0c;一起来看看吧。 无水印的电脑录屏软…

2022社交平台设备风险安卓占三成,iOS 仅占一成

目录 2022年度社交平台风险分析 社交平台黑灰产作弊手段分析 社交平台如何应对&#xff1f; 随着移动互联网的发展&#xff0c;社交媒体进入“人人皆媒”时代。社交不再仅仅满足于用户即时通讯的需求&#xff0c;还承载了在线支付、内容分享等等的多元功能&#xff0c;正不断…

Rsync服务端和客户端多模块和排错

一台服务器可能有N多个文件需要同步备份, 那怎么办呢? 其实这个也很容易解决, 就是在服务器端多建几个模块, 每个模块包含不同的文件夹, 使用同样的密码文件即可实现. 如同下面的: use chroot false #不使用chroot, 其实这个应该是针对linux系统来说的.既然是默认的, …

jQuery.NiceScroll - 有史以来最好的 nicescroll 版本——在现代浏览器和移动设备上极其流畅和一致,资源使用率低(中文文档)

jQuery.NiceScroll特征依赖关系使用配置参数有史以来最好的 nicescroll 版本——在现代浏览器和移动设备上极其流畅和一致&#xff0c;资源使用率低 官网:nicescroll.areaaperta.com GitHub:github.com/inuyaksa/jquery.nicescroll CDN引入: https://www.bootcdn.cn/jquery.nic…

Flink-Table API 和 SQL(基本API、流处理的表、时间属性和窗口、聚合查询、联结查询、函数、SQL客户端、连接到外部系统)

文章目录Table API 和 SQL快速上手基本 API程序架构创建表环境创建表表的查询输出表表和流的转换流处理中的表动态表和持续查询将流转换成动态表原理用 SQL 持续查询-更新查询&追加查询将动态表转换为流(Append-only、Retract、Upsert)时间属性和窗口事件时间处理时间窗口&…

使用react hooks 封装的圆形滚动组件

相关技术 react , hooks , ts 功能描述 根据用户的触摸&#xff0c;对卡片进行一个圆形的旋转滚动。 码上掘金 引入组件好像不支持ts类型会报错&#xff0c;所以功能函数就丢到一个文件里面了 使用 引入 ScrollRotate 组件&#xff0c;在需要使用的数据列表外包裹一层&…

[Datawhale][CS224W]图机器学习(四)

目录一、回顾二、图嵌入概述2.1 补充知识——表示学习2.2 图嵌入2.3 图嵌入-基本框架 编码器——解码器2.3.1 编码器2.3.2 解码器2.3.3 执行步骤2.4 随机游走2.4.1 随机游走的方法步骤2.4.2 计算优化三、随机梯度下降3.1 SGD步骤3.2 批处理四、node2vec五、基于随机游走的图嵌入…

vivo x TiDB丨解决云服务海量数据挑战

vivo 是一家全球性的移动互联网智能终端公司&#xff0c;品牌产品包括智能手机、平板电脑、智能手表等 &#xff0c;截至 2022 年 8 月&#xff0c;已进驻 60 多个国家和地区&#xff0c;全球用户覆盖 4 亿多人。 vivo 为用户提供了在手机上备份联系人、短信、便签、书签等数据…

k8s-kubeadm部署

文章目录一、准备环境二、安装docker三、安装kubeadm&#xff0c;kubelet和kubectl四、部署容器网络五、部署UI一、准备环境 1.安装要求 在开始之前&#xff0c;部署Kubernetes集群机器需要满足以下几个条件&#xff1a; 一台或多台机器&#xff0c;操作系统 CentOS7.x-86_x6…

论文阅读:pixelNeRF: Neural Radiance Fields from One or Few Images

中文标题&#xff1a;从一或少量图像中构建神经辐射场 提出问题 NeRF效果虽然惊艳&#xff0c;但是其需要大量环绕图像以及长时间的训练。 创新点 与原始的NeRF网络不使用任何图像特征不同&#xff0c;pixelNeRF将与每个像素对齐的空间图像特征作为输入。也可以集合更多输入…

计算机网络(第三版) 胡亮 课后习题第三章答案

计算机网络&#xff08;第三版&#xff09; 胡亮 课后习题第三章答案 1、双绞线电缆有哪两种&#xff1f; 非屏蔽双绞线&#xff08;UTP&#xff09;和屏蔽双绞线(STP) 2、UTP分为几类&#xff1f; UTP安好电气性能分为8种类型&#xff1a;1类、2类、3类、4类、5类、超5类、6类…

python基于vue学生毕业离校系统

可定制框架:ssm/Springboot/vue/python/PHP/小程序/安卓均可开发 目录 1 绪论 1 1.1课题背景 1 1.2课题研究现状 1 1.3初步设计方法与实施方案 2 1.4本文研究内容 2 2 系统开发环境 4 3 系统分析 6 3.1系统可行性分析 6 3.1.1经济可行性 6 3.1.2技术可行性 6 3.1.3运行可行性 6…

面试攻略,Java 基础面试 100 问(十二)

如何将字符串转换为基本数据类型&#xff1f; 调用基本数据类型对应的包装类中的方法 parseXXX(String)或 valueOf(String)即可返回相应基本类型&#xff1b; 如何将基本数据类型转换为字符串&#xff1f; 一种方法是将基本数据类型与空字符串&#xff08;””&#xff09;连…

面试官最喜欢的软件测试工程师简历模板

目录 个人信息 求职意向 职业技能 工作经历 项目经历 工作经历 项目经历 教育经历 自我评价 总结 个人信息 姓 名&#xff1a;xxx 性 别&#xff1a;女 手 机&#xff1a;xxxxxxxxxxxx 最高学历&#xff1a;统招硕士 工作年限&am…

专业运动耳机哪个牌子好、专业运动耳机推荐

近些年&#xff0c;户外运动兴起&#xff0c;运动耳机迎来爆发增长&#xff0c;拒绝运动乏味&#xff0c;追求健康运动方式&#xff0c;已经成为当下年轻人的共同诉求。跑步骑行听音乐&#xff0c;已经是运动爱好者再熟悉不过的操作&#xff0c;很多人在运动中离不开音乐的节奏…

【小程序】新版uniapp登录流程以及获取头像和昵称

众所周知&#xff0c;小程序新版登录无法拿到头像和昵称&#xff01; 这篇文章讲解如何获取到微信用户昵称和头像 成品效果 步骤一&#xff0c;点击登录&#xff0c;获取token 步骤二&#xff0c;登录按钮隐藏&#xff0c;展示上传按钮 步骤三&#xff0c;点击上传按钮…

k8s介绍-组件架构-核心

文章目录一、Kubernetes介绍1、什么是Kubernetes&#xff1f;2、为什么需要Kubernetes&#xff0c;它能做什么&#xff1f;3、k8s的特性二、k8s集群架构与组件1、Master组件2、配置存储中心——etcd3、Worker Node 组件3.1 Node节点的工作流程&#xff1a;●Kubelet●Kube-Prox…

本地主机搭建服务器后如何让外网访问?快解析内网端口映射

本地主机搭建应用、部署服务器后&#xff0c;在局域网内是可以直接通过计算机内网IP网络地址进行连接访问的&#xff0c;但在外网电脑和设备如何访问呢&#xff1f;由于内网环境下&#xff0c;无法提供公网IP使用&#xff0c;外网访问内网就需要一个内外网转换的介质。这里介绍…