Mocha and Red and Blue

一、題目

題面翻譯

給定長為 n n n 的僅由 R \texttt{R} R B \texttt{B} B ? \texttt{?} ? 組成的字符串 S S S,請你在 ? \texttt{?} ? 處填入 R \texttt{R} R B \texttt{B} B,使得相鄰位置字符相同的數量最少。

譯者 @ajthreac

題目描述

As their story unravels, a timeless tale is told once again…

Shirahime, a friend of Mocha’s, is keen on playing the music game Arcaea and sharing Mocha interesting puzzles to solve. This day, Shirahime comes up with a new simple puzzle and wants Mocha to solve them. However, these puzzles are too easy for Mocha to solve, so she wants you to solve them and tell her the answers. The puzzles are described as follow.

There are $ n $ squares arranged in a row, and each of them can be painted either red or blue.

Among these squares, some of them have been painted already, and the others are blank. You can decide which color to paint on each blank square.

Some pairs of adjacent squares may have the same color, which is imperfect. We define the imperfectness as the number of pairs of adjacent squares that share the same color.

For example, the imperfectness of “BRRRBBR” is $ 3 $ , with “BB” occurred once and “RR” occurred twice.

Your goal is to minimize the imperfectness and print out the colors of the squares after painting.

輸入格式

Each test contains multiple test cases.

The first line contains a single integer $ t $ ( $ 1 \le t \le 100 $ ) — the number of test cases. Each test case consists of two lines.

The first line of each test case contains an integer $ n $ ( $ 1\leq n\leq 100 $ ) — the length of the squares row.

The second line of each test case contains a string $ s $ with length $ n $ , containing characters ‘B’, ‘R’ and ‘?’. Here ‘B’ stands for a blue square, ‘R’ for a red square, and ‘?’ for a blank square.

輸出格式

For each test case, print a line with a string only containing ‘B’ and ‘R’, the colors of the squares after painting, which imperfectness is minimized. If there are multiple solutions, print any of them.

樣例 #1

樣例輸入 #1

5
7
?R???BR
7
???R???
1
?
1
B
10
?R??RB??B?

樣例輸出 #1

BRRBRBR
BRBRBRB
B
B
BRRBRBBRBR

提示

In the first test case, if the squares are painted “BRRBRBR”, the imperfectness is $ 1 $ (since squares $ 2 $ and $ 3 $ have the same color), which is the minimum possible imperfectness.

二、分析

找到第一個不是’?'的字符,向兩邊修改;

#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
int main() {int T;cin >> T;while(T--) {int n;cin >> n;string s;cin >> s;if(count(s.begin(),s.end(),'B')== 0 && count(s.begin(),s.end(),'R')==0){ for(int i = 0; i < s.size(); i++) {if(i % 2 == 0) s[i] = 'B';else s[i] = 'R';}cout<<s<<endl;continue;}for(int j=0;j<s.size();j++){if(s[j]!='?'){for(int k=j-1;k>=0;k--){if(s[k]!='?') break;if(s[k+1]=='B') s[k]='R';else s[k]='B';}for(int k=j+1;k<s.size();k++){if(s[k]!='?') break;if(s[k-1]=='B') s[k]='R';else s[k]='B';}}}cout<<s<<endl;}
}

例題2

假如是計算相鄰但不相等的對數,可以使用dp

樣例輸入 #1

5
7
?R???BR
7
???R???
1
?
1
B
10
?R??RB??B?

樣例輸出 #1

5
6
0
0
7
#include<iostream>
#include<cstring>
using namespace std;
const int N=200;
int dp[N][2]; //dp[i][0]表示第個位置選B的ans最大數量,dp[i][1]表示第i個位置選R的ans最大數量
int main()
{int T;cin>>T;while(T--){memset(dp,0,sizeof(dp));int n;string s;cin>>n>>s;s=" "+s;for(int i=2;i<=n;i++){if(s[i]=='?'||s[i]=='B'){dp[i][0]=max(dp[i-1][1]+1,dp[i-1][0]);}else{dp[i][0]=0;}if(s[i]=='?'||s[i]=='R'){dp[i][1]=max(dp[i-1][1]+1,dp[i-1][0]);}else{dp[i][1]=0;}}for(int i=1;i<=n;i++)cout<<dp[i][1]<<" ";cout<<endl;cout<<max(dp[n][0],dp[n][1])<<endl;}
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/40924.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/40924.shtml
英文地址,請注明出處:http://en.pswp.cn/news/40924.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Hadoop HA集群兩個NameNode都是standby或者主NameNode是standby,從NameNode是active的情況集錦

文章目錄 背景架構HDFS HA配置錯誤原因解決方案方案一方案二方案三&#xff08;首先查看自己各參數文件是否配置出錯&#xff09; 后記補充failovertransitionToActive 常用端口號及配置文件常用端口號hadoop3.xhadoop2.x 常用配置文件 這里說一下配置Hadoop HA集群可能出現的兩…

Linux多線程【初識線程】

?個人主頁&#xff1a; 北 海 &#x1f389;所屬專欄&#xff1a; Linux學習之旅 &#x1f383;操作環境&#xff1a; CentOS 7.6 阿里云遠程服務器 文章目錄 &#x1f307;前言&#x1f3d9;?正文1、什么是線程&#xff1f;1.1、基本概念1.2、線程理解1.3、進程與線程的關系…

分布式事務與解決方案

一、什么是分布式事務 首先我們知道本地事務是指事務方法中的操作只依賴本地數據庫&#xff0c;可保證事務的ACID特性。而在分布式系統中&#xff0c;一個應用系統被拆分為多個可獨立部署的微服務&#xff0c;在一個微服務的事務方法中&#xff0c;除了依賴本地數據庫外&#…

【深入理解ES6】塊級作用域綁定

1. var聲明及變量提升機制 提升&#xff08;Hoisting&#xff09;機制&#xff1a;通過關鍵字var聲明的變量&#xff0c;都會被當成在當前作用域頂部生命的變量。 function getValue(condition){if(condition){var value "blue";console.log(value);}else{// 此處…

代碼隨想錄算法訓練營第三十六天 | 435. 無重疊區間,763.劃分字母區間,56. 合并區間

代碼隨想錄算法訓練營第三十六天 | 435. 無重疊區間&#xff0c;763.劃分字母區間&#xff0c;56. 合并區間 435. 無重疊區間:eyes:題目總結:eyes: 763.劃分字母區間:eyes:題目總結:eyes: 56. 合并區間:eyes:題目總結:eyes: 435. 無重疊區間 題目鏈接 視頻講解 給定一個區間的…

并發編程系列-Semaphore

Semaphore&#xff0c;如今通常被翻譯為"信號量"&#xff0c;過去也曾被翻譯為"信號燈"&#xff0c;因為類似于現實生活中的紅綠燈&#xff0c;車輛是否能通行取決于是否是綠燈。同樣&#xff0c;在編程世界中&#xff0c;線程是否能執行取決于信號量是否允…

8.10 用redis實現緩存功能和Spring Cache

什么是緩存? 緩存(Cache), 就是數據交換的緩沖區,俗稱的緩存就是緩沖區內的數據,一般從數據庫中獲取,存儲于本地代碼。 通過Redis來緩存數據&#xff0c;減少數據庫查詢操作; 邏輯 每個分類的菜品保存一份緩存數據 數據庫菜品數據有變更時清理緩存數據 如何將商品數據緩存起…

p-級數的上界(Upper bound of p-series)

積分判別法-The Integral Test https://math.stackexchange.com/questions/2858067/upper-bound-of-p-series https://courses.lumenlearning.com/calculus2/chapter/the-p-series-and-estimating-series-value/ 兩個重要級數&#xff08;p級數和幾何級數&#xff09; ht…

WPF顯示初始界面--SplashScreen

WPF顯示初始界面–SplashScreen 前言 WPF應用程序的運行速度快&#xff0c;但并不能在瞬間啟動。當第一次啟動應用程序時&#xff0c;會有一些延遲&#xff0c;因為公共語言運行時&#xff08;CLR&#xff09;首先需要初始化.NET環境&#xff0c;然后啟動應用程序。 對于WPF中…

高憶管理:股票T+0交易是什么意思?t+0交易有什么好處?

股票的買賣準則有很多種&#xff0c;T0買賣便是其中之一。那么股票T0買賣是什么意思&#xff1f;t0買賣有什么優點&#xff1f;高憶管理也為大家預備了相關內容&#xff0c;以供參考。 股票T0買賣是什么意思&#xff1f; T0買賣準則是指出資者當天買入的股票能夠在當天賣出&am…

IP 多播協議(IP Multicast Protocol)

IP 多播協議&#xff08;IP Multicast Protocol&#xff09;是一種在網絡中一對多傳輸數據的通信方式。在傳統的單播通信中&#xff0c;數據從一個發送方發送到一個接收方&#xff1b;而在多播通信中&#xff0c;數據可以從一個發送方傳輸到多個接收方&#xff0c;從而有效地節…

SpringBoot 異步、郵件任務

異步任務 創建一個Hello項目 創建一個類AsyncService 異步處理還是非常常用的&#xff0c;比如我們在網站上發送郵件&#xff0c;后臺會去發送郵件&#xff0c;此時前臺會造成響應不動&#xff0c;直到郵件發送完畢&#xff0c;響應才會成功&#xff0c;所以我們一般會采用多線…

神經網絡基礎-神經網絡補充概念-03-邏輯回歸損失函數

概念 邏輯回歸使用的損失函數通常是"對數損失"&#xff08;也稱為"交叉熵損失"&#xff09;或"邏輯損失"。這些損失函數在訓練過程中用于衡量模型預測與實際標簽之間的差異&#xff0c;從而幫助模型逐步調整權重參數&#xff0c;以更好地擬合數…

指靜脈開集測試(OpenSet-test)代碼(包含7個數據集)

七個數據集:sdu、mmc、hkpu、scut、utfvp、vera、nupt 一、SDU 80%用于訓練,20%用于作為開集測試 1.數據集分割代碼 ①先把636個類別提取出來 func: 創建temp_sdu,將636個類劃分出來。下一個代碼塊將進行openset_sdu的分割import os from shutil import copy, rmtre…

c++--SLT六大組件之間的關系

1.SLT六大組件&#xff1a; 容器&#xff0c;迭代器&#xff0c;算法&#xff0c;仿函數&#xff0c;適配器&#xff0c;空間配置器 2.六大組件之間的關系 容器&#xff1a;容器是STL最基礎的組件&#xff0c;沒有容器&#xff0c;就沒有數據&#xff0c;容器的作用就是用來存…

IO流 詳細介紹

一、IO流概述 1.IO&#xff1a;輸入(Input讀取數據)/輸出(Output寫數據) 2.流&#xff1a;是一種抽象概念&#xff0c;是對數據傳輸的總稱,也就是說數據在設備間的傳輸稱為流&#xff0c;流的本質是數據傳輸IO流就是用來處理設備間數據傳輸問題的。 3.常見的應用&#xff1a…

【Sklearn】基于隨機森林算法的數據分類預測(Excel可直接替換數據)

【Sklearn】基于隨機森林算法的數據分類預測(Excel可直接替換數據) 1.模型原理1.1 模型原理1.2 數學模型2.模型參數3.文件結構4.Excel數據5.下載地址6.完整代碼7.運行結果1.模型原理 隨機森林(Random Forest)是一種集成學習方法,通過組合多個決策樹來構建強大的分類或回歸…

JVM - 垃圾回收機制

JVM的垃圾回收機制(簡稱GC) JVM的垃圾回收機制非常強大&#xff0c;是JVM的一個很重要的功能&#xff0c;而且這也是跟對象實例息息相關的&#xff0c;如果對象實例不用了要怎么清除呢&#xff1f; 如何判斷對象已經沒用了 當JVM認為一個對像已經沒用了&#xff0c;就會把這個…

初識Sentinel

目錄 1.解決雪崩的方式有4種&#xff1a; 1.1.2超時處理&#xff1a; 1.1.3倉壁模式 1.1.4.斷路器 1.1.5.限流 1.1.6.總結 1.2.服務保護技術對比 1.3.Sentinel介紹和安裝 1.3.1.初識Sentinel 1.3.2.安裝Sentinel 1.4.微服務整合Sentinel 2.流量控制 2.1.簇點鏈路 …

Ubuntu中怎么清空mysql數據

要清空 MySQL 數據&#xff0c;可以使用以下步驟來執行。請注意&#xff0c;這將會永久刪除數據庫中的所有數據&#xff0c;請謹慎操作&#xff0c;并在操作前備份重要數據。 登錄 MySQL&#xff1a; 打開終端&#xff0c;使用以下命令登錄到 MySQL 數據庫。根據情況&#xf…