B4375 [蓝桥杯青少年组省赛 2025] 庆典队列
题目描述
有 名志愿者参加了一场庆典活动,我们希望将这些人排成一个矩形队列,要求队列共有 行,且每一行的人数都要相等。
请计算每一行最多有多少名志愿者。
注意:不一定要将所有的志愿者都安排进队列。
例如:,,表示要将 名志愿者排成一个 行的矩形队列,那么每一行最多能安排 名志愿者。
输入格式
输入两个整数 和 (,),分别表示志愿者人数以及矩形队列的行数,整数之间以一个空格隔开。
输出格式
输出一个整数,表示矩形队列的每一行最多有多少名志愿者。
输入输出样例 #1
输入 #1
50 11输出 #1
4一眼弱智题,不想动脑,直接枚举每一行人数,使它*行数<=总人数,最后再减1就好了
代码如下:
#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; }2.B4376 [蓝桥杯青少年组省赛 2025] 茶具套装
题目描述
佳佳在一家茶具商店工作,有客户要订购一些茶具套装,一套完整的茶具套装包含 个茶壶、 个盖碗、 个茶漏以及 个茶杯。现在已知茶壶、盖碗、茶漏和茶杯各自的数量,需要编写一个程序来计算最多能够组成多少套完整的茶具套装。
例如:茶壶、盖碗、茶漏和茶杯各自的数量分别是 ,,,。根据这些茶具的数量,佳佳最多能组成 套完整的茶具套装。
输入格式
输入 个整数( 整数 ),分别表示茶壶、盖碗、茶漏和茶杯各自的数量,整数之间以一个空格隔开。
输出格式zuiduan
输出一个整数,表示最多能组成完整的茶具套装数量。
输入输出样例 #1
输入 #1
3 4 2 13输出 #1
2思路:
只要看其中每一种茶具分别能凑多少套,然后找其中最少的就好了
#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; }3.B4377 [蓝桥杯青少年组省赛 2025] 平衡奇偶位置的字符交换
题目描述
给定一个字符串 ,其中仅包含字符 和字符 。你每次可以选择交换两个位置相邻的字符,请计算如果要使奇数位置上(位置从 1 开始)字符 的数量等于偶数位置上字符 的数量,最少需要进行多少次交换操作。
例如:,从左往右数,奇数位置上字符 的数量为 (位置 ),偶数位置上字符 的数量为 (位置 、、)。可将位置 的字符 和位置 的字符 交换。交换后,奇数位置上字符 的数量和偶数位置上字符 的数量都为 ,满足题目要求,故最少需要交换一次。
输入格式
输入一个字符串 ( 的长度 ),其中仅包含字符 和字符 。
输出格式
输出一个整数,表示满足题目要求的最少交换次数,如果无论怎么交换都无法满足题目要求,则输出 。
输入输出样例 #1
输入 #1
AABABA输出 #1
1思路:
只要统计奇数位和偶数位上A的个数,算出他们的差值,就像两个小朋友给糖果,多的给少的分,分到一样就好了
注意:如果奇数位和偶数位上差值为奇数时,是无法给到相同的,所以由此可得一下代码:
#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[i]=='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;