B4375 [蓝桥杯青少年组省赛 2025] 庆典队列&&B4376 [蓝桥杯青少年组省赛 2025] 茶具套装&&B4377 [蓝桥杯青少年组省赛 2025] 平衡奇偶位置的字符交换
<h1 id="好久不见最近参加了蓝桥的省赛虽然只是省二但是还是要总结一下">好久不见,最近参加了蓝桥的省赛,虽然只是省二,但是还是要总结一下</h1><h2 id="今儿个三合一前三道">今儿个三合一,前三道</h2>
<h1 id="1b4375-蓝桥杯青少年组省赛-2025-庆典队列">1.B4375 [蓝桥杯青少年组省赛 2025] 庆典队列</h1>
<h2 id="题目描述">题目描述</h2>
<p>有 <span class="math inline">\(n\)</span> 名志愿者参加了一场庆典活动,我们希望将这些人排成一个矩形队列,要求队列共有 <span class="math inline">\(A\)</span> 行,且每一行的人数都要相等。</p>
<p>请计算每一行最多有多少名志愿者。</p>
<p>注意:不一定要将所有的志愿者都安排进队列。</p>
<p>例如:<span class="math inline">\(n = 50\)</span>,<span class="math inline">\(A = 11\)</span>,表示要将 <span class="math inline">\(50\)</span> 名志愿者排成一个 <span class="math inline">\(11\)</span> 行的矩形队列,那么每一行最多能安排 <span class="math inline">\(4\)</span> 名志愿者。</p>
<h2 id="输入格式">输入格式</h2>
<p>输入两个整数 <span class="math inline">\(n\)</span> 和 <span class="math inline">\(A\)</span>(<span class="math inline">\(2 \leq n \leq 500\)</span>,<span class="math inline">\(2 \leq A \leq n\)</span>),分别表示志愿者人数以及矩形队列的行数,整数之间以一个空格隔开。</p>
<h2 id="输出格式">输出格式</h2>
<p>输出一个整数,表示矩形队列的每一行最多有多少名志愿者。</p>
<h2 id="输入输出样例-1">输入输出样例 #1</h2>
<h3 id="输入-1">输入 #1</h3>
<pre><code>50 11
</code></pre>
<h3 id="输出-1">输出 #1</h3>
<pre><code>4
</code></pre>
<h2 id="一眼弱智题不想动脑直接枚举每一行人数使它行数总人数最后再减1就好了">一眼弱智题,不想动脑,直接枚举每一行人数,使它*行数<=总人数,最后再减1就好了</h2>
<h1 id="代码如下">代码如下:</h1>
<pre><code class="language-cpp">#include <bits/stdc++.h>
using namespace std;
int main(){
int a,b;
cin>>a>>b;
int ans=0;
for(ans;ans*b<=a;ans++){
}
cout<<--ans;
return 0;
}
</code></pre>
<h1 id="2b4376-蓝桥杯青少年组省赛-2025-茶具套装">2.B4376 [蓝桥杯青少年组省赛 2025] 茶具套装</h1>
<h2 id="题目描述-1">题目描述</h2>
<p>佳佳在一家茶具商店工作,有客户要订购一些茶具套装,一套完整的茶具套装包含 <span class="math inline">\(1\)</span> 个茶壶、<span class="math inline">\(1\)</span> 个盖碗、<span class="math inline">\(1\)</span> 个茶漏以及 <span class="math inline">\(4\)</span> 个茶杯。现在已知茶壶、盖碗、茶漏和茶杯各自的数量,需要编写一个程序来计算最多能够组成多少套完整的茶具套装。</p>
<p>例如:茶壶、盖碗、茶漏和茶杯各自的数量分别是 <span class="math inline">\(3\)</span>,<span class="math inline">\(4\)</span>,<span class="math inline">\(2\)</span>,<span class="math inline">\(13\)</span>。根据这些茶具的数量,佳佳最多能组成 <span class="math inline">\(2\)</span> 套完整的茶具套装。</p>
<h2 id="输入格式-1">输入格式</h2>
<p>输入 <span class="math inline">\(4\)</span> 个整数(<span class="math inline">\(0 \leq\)</span> 整数 <span class="math inline">\(\leq 100\)</span>),分别表示茶壶、盖碗、茶漏和茶杯各自的数量,整数之间以一个空格隔开。</p>
<h2 id="输出格式zuiduan">输出格式zuiduan</h2>
<p>输出一个整数,表示最多能组成完整的茶具套装数量。</p>
<h2 id="输入输出样例-1-1">输入输出样例 #1</h2>
<h3 id="输入-1-1">输入 #1</h3>
<pre><code>3 4 2 13
</code></pre>
<h3 id="输出-1-1">输出 #1</h3>
<pre><code>2
</code></pre>
<h2 id="思路">思路:</h2>
<h2 id="只要看其中每一种茶具分别能凑多少套然后找其中最少的就好了">只要看其中每一种茶具分别能凑多少套,然后找其中最少的就好了</h2>
<pre><code class="language-cpp">#include <bits/stdc++.h>
using namespace std;
int main(){
int a,b,c,d;
cin>>a>>b>>c>>d;
cout<<min({a,b,c,d/4});
return 0;
}
</code></pre>
<h1 id="3b4377-蓝桥杯青少年组省赛-2025-平衡奇偶位置的字符交换">3.B4377 [蓝桥杯青少年组省赛 2025] 平衡奇偶位置的字符交换</h1>
<h2 id="题目描述-2">题目描述</h2>
<p>给定一个字符串 <span class="math inline">\(S\)</span>,其中仅包含字符 <span class="math inline">\(\tt A\)</span> 和字符 <span class="math inline">\(\tt B\)</span>。你每次可以选择交换两个位置相邻的字符,请计算如果要使奇数位置上(位置从 1 开始)字符 <span class="math inline">\(\tt A\)</span> 的数量等于偶数位置上字符 <span class="math inline">\(\tt A\)</span> 的数量,最少需要进行多少次交换操作。</p>
<p>例如:<span class="math inline">\(S = \tt{AABABA}\)</span>,从左往右数,奇数位置上字符 <span class="math inline">\(\tt A\)</span> 的数量为 <span class="math inline">\(1\)</span>(位置 <span class="math inline">\(1\)</span>),偶数位置上字符 <span class="math inline">\(\tt A\)</span> 的数量为 <span class="math inline">\(3\)</span>(位置 <span class="math inline">\(2\)</span>、<span class="math inline">\(4\)</span>、<span class="math inline">\(6\)</span>)。可将位置 <span class="math inline">\(2\)</span> 的字符 <span class="math inline">\(\tt A\)</span> 和位置 <span class="math inline">\(3\)</span> 的字符 <span class="math inline">\(\tt B\)</span> 交换。交换后,奇数位置上字符 <span class="math inline">\(\tt A\)</span> 的数量和偶数位置上字符 <span class="math inline">\(\tt A\)</span> 的数量都为 <span class="math inline">\(2\)</span>,满足题目要求,故最少需要交换一次。</p>
<h2 id="输入格式-2">输入格式</h2>
<p>输入一个字符串 <span class="math inline">\(S\)</span>(<span class="math inline">\(2 \leq S\)</span> 的长度 <span class="math inline">\(\leq 10^5\)</span>),其中仅包含字符 <span class="math inline">\(\tt A\)</span> 和字符 <span class="math inline">\(\tt B\)</span>。</p>
<h2 id="输出格式-1">输出格式</h2>
<p>输出一个整数,表示满足题目要求的最少交换次数,如果无论怎么交换都无法满足题目要求,则输出 <span class="math inline">\(-1\)</span>。</p>
<h2 id="输入输出样例-1-2">输入输出样例 #1</h2>
<h3 id="输入-1-2">输入 #1</h3>
<pre><code>AABABA
</code></pre>
<h3 id="输出-1-2">输出 #1</h3>
<pre><code>1
</code></pre>
<h2 id="思路-1">思路:</h2>
<h2 id="只要统计奇数位和偶数位上a的个数算出他们的差值就像两个小朋友给糖果多的给少的分分到一样就好了">只要统计奇数位和偶数位上A的个数,算出他们的差值,就像两个小朋友给糖果,多的给少的分,分到一样就好了</h2>
<h2 id="注意如果奇数位和偶数位上差值为奇数时是无法给到相同的所以由此可得一下代码">注意:如果奇数位和偶数位上差值为奇数时,是无法给到相同的,所以由此可得一下代码:</h2>
<pre><code class="language-cpp">#include <bits/stdc++.h>
using namespace std;
int main(){
string st,s;
cin>>s;
st+=" ";
st+=s;
int ji=0,o=0;
for(int i=1;i<=int(st.size());i++){
if(st=='A'){
if(i%2==1){
ji++;
}else{
o++;
}
}
}
int mx=max(ji,o),mi=min(ji,o);
if((mx-mi)%2==1){
cout<<-1;
return 0;
}
int ans=0;
while(mx!=mi){
mx--;
mi++;
ans++;
}
cout<<ans;
//cout<<mx<<" "<<mi;
//cout<<ji<<" "<<o;
return 0;
}
</code></pre>
<h1 id="今天就到这里下次会写后三道的danke">今天就到这里,下次会写后三道的,Danke!</h1><br><br>
来源:https://www.cnblogs.com/wei-boke/p/19116442
頁:
[1]