蓝桥杯-2025年C++B组省赛

张开发
2026/6/8 6:31:49 15 分钟阅读
蓝桥杯-2025年C++B组省赛
P12130 [蓝桥杯 2025 省 B] 移动距离题目背景本站蓝桥杯 2025 省赛测试数据均为洛谷自造与官方数据可能存在差异仅供学习参考。题目描述小明初始在二维平面的原点他想前往坐标 (233,666)。在移动过程中他只能采用以下两种移动方式并且这两种移动方式可以交替、不限次数地使用水平向右移动即沿着 x 轴正方向移动一定的距离。沿着一个圆心在原点 (0,0)、以他当前位置到原点的距离为半径的圆的圆周移动移动方向不限即顺时针或逆时针移动不限。在这种条件下他到达目的地最少移动多少单位距离你只需要输出答案四舍五入到整数的结果。输入格式无输出格式这是一道结果填空的题你只需要算出结果后提交即可。本题的结果为一个整数在提交答案时只需要编写一个程序输出这个整数输出多余的内容将无法得分。输入输出样例无实现代码#include bits/stdc.h using namespace std; int main() { double r sqrt(233 * 233 666 * 666); int res r asin(666.0 / r) * r; cout res; return 0; }P12131 [蓝桥杯 2025 省 B] 客流量上限题目描述一家连锁旅馆在全国拥有 2025 个分店分别编号为 1 至 2025。随着节日临近总部决定为每家分店设定每日客流量的上限分别记作 A1​,A2​,…,A2025​。这些上限并非随意分配而是需要满足以下约束条件A1​,A2​,…,A2025​ 必须是 1 至 2025 的一个排列即每个 Ai​ 均是 1 至 2025 之间的整数且所有 Ai​ 互不相同。对于任意分店 i 和 j1≤i,j≤2025i 可等于 j它们的客流量上限 Ai​ 和 Aj​ 的乘积不得超过 i×j2025。这些约束旨在平衡各分店客流压力确保服务质量和运营稳定性。现在请你计算这样的分配方案究竟有多少种。由于答案可能很大你只需输出其对 1097 取余后的结果即可。输入格式无输出格式这是一道结果填空的题你只需要算出结果后提交即可。本题的结果为一个整数在提交答案时只需要编写一个程序输出这个整数输出多余的内容将无法得分。输入输出样例无实现代码#include bits/stdc.h using namespace std; using ll long long; const int MOD 1e9 7; ll fast_pow(ll a, ll b, int mod) { ll ans 1; while (b) { if (b 1) ans (ans * a) % mod; b 1; a (a * a) % mod; } return ans; } int main() { ios::sync_with_stdio(0), cin.tie(0); cout fast_pow(2, 1012, MOD); return 0; }P12132 [蓝桥杯 2025 省 B] 可分解的正整数题目背景本站蓝桥杯 2025 省赛测试数据均为洛谷自造与官方数据可能存在差异仅供学习参考。题目描述定义一种特殊的整数序列这种序列由连续递增的整数组成并满足以下条件序列长度至少为 3。序列中的数字是连续递增的整数即相邻元素之差为 1可以包括正整数、负整数或 0。例如[1,2,3]、[4,5,6,7] 和 [−1,0,1] 是符合条件的序列而 [1,2]长度不足和 [1,2,4]不连续不符合要求。现给定一组包含 N 个正整数的数据 A1​,A2​,…,AN​。如果某个 Ai​ 能够表示为符合上述条件的连续整数序列中所有元素的和则称 Ai​ 是可分解的。请你统计这组数据中可分解的正整数的数量。输入格式输入的第一行包含一个正整数 N表示数据的个数。第二行包含 N 个正整数 A1​,A2​,…,AN​表示需要判断是否可分解的正整数序列。输出格式输出一个整数表示给定数据中可分解的正整数的数量。输入输出样例输入 #1复制3 3 6 15输出 #1复制3说明/提示样例说明Ai​3 是可分解的因为 [0,1,2] 的和为 0123。Ai​6 是可分解的因为 [1,2,3] 的和为 1236。Ai​15 是可分解的因为 [4,5,6] 的和为 45615。所以可分解的正整数的数量为 3。评测用例规模与约定对于 30% 的评测用例1≤N≤1001≤Ai​≤100。对于 100% 的评测用例1≤N≤1051≤Ai​≤109。实现代码#includeiostream using namespace std; int main(){ int n,ans; cinn; ansn; for(int i1;in;i){ int x; cinx; if(x1){ ans--; } } coutans; return 0; }P12133 [蓝桥杯 2025 省 B] 产值调整题目描述偏远的小镇上三兄弟共同经营着一家小型矿业公司“兄弟矿业”。公司旗下有三座矿山金矿、银矿和铜矿它们的初始产值分别用非负整数 A、B 和 C 表示。这些矿山的产出是小镇经济的核心支撑着三兄弟和许多矿工家庭的生计。然而各矿山的产值波动剧烈有时金矿收益高而银矿、铜矿低迷有时则相反。这种不稳定性让公司收入难以预测也常引发兄弟间的争执。为了稳定经营三兄弟设计了一个公平的产值调整策略每年执行一次每次调整时将根据当前的产值 A、B、C计算新产值金矿新产值A′⌊2BC​⌋银矿新产值B′⌊2AC​⌋铜矿新产值C′⌊2AB​⌋其中⌊⌋ 表示向下取整。例如⌊3.7⌋3⌊5.2⌋5。计算出 A′、B′、C′ 后同时更新A 变为 A′B 变为 B′C 变为 C′作为下一年调整的基础。三兄弟认为这个方法能平衡产值波动于是计划连续执行 K 次调整。现在请你帮他们计算经过 K 次调整后金矿、银矿和铜矿的产值分别是多少。输入格式输入的第一行包含一个整数 T表示测试用例的数量。接下来的 T 行每行包含四个整数 A,B,C,K分别表示金矿、银矿和铜矿的初始产值以及需要执行的调整次数。输出格式对于每个测试用例输出一行包含三个整数表示经过 K 次调整后金矿、银矿和铜矿的产值用空格分隔。输入输出样例输入 #1复制2 10 20 30 1 5 5 5 3输出 #1复制25 20 15 5 5 5说明/提示评测用例规模与约定对于 30% 的评测用例1≤T≤1001≤A,B,C,K≤105。对于 100% 的评测用例1≤T≤1051≤A,B,C,K≤109。实现代码#include bits/stdc.h using namespace std; bool flagfalse; int main(){ int T; cinT; while(T--){ int a,b,c,k,a1,b1,c1; flagfalse; cinabck; for(int i1;ik;i){ a1(bc)/2; b1(ac)/2; c1(ab)/2; aa1; bb1; cc1; if(abbc){ couta b c\n; flagtrue; break; } } if(!flag) couta b c\n; } return 0; }P12134 [蓝桥杯 2025 省 B] 画展布置题目描述画展策展人小蓝和助理小桥为即将举办的画展准备了 N 幅画作其艺术价值分别为 A1​,A2​,…,AN​。他们需要从这 N 幅画中挑选 M 幅并按照一定顺序布置在展厅的 M 个位置上。如果随意挑选和排列艺术价值的变化可能会过于突兀导致观众的观展体验不够流畅。为了优化布置他们查阅了《画展布置指南》。指南指出理想的画展应使观众在欣赏画作时艺术价值的过渡尽量平缓。指南建议选择并排列 M 幅画应使艺术价值的变化程度通过一个数值 L 来衡量且该值越小越好。数值 L 的定义为Li1∑M−1​∣Bi12​−Bi2​∣其中 Bi​ 表示展厅第 i 个位置上画作的艺术价值。现在他们希望通过精心挑选和排列这 M 幅画作使 L 达到最小值以提升画展的整体协调性。请你帮他们计算出这个最小值是多少。输入格式输入共两行。第一行包含两个正整数 N 和 M分别表示画作的总数和需要挑选的画作数量。第二行包含 N 个正整数 A1​,A2​,…,AN​表示每幅画作的艺术价值。输出格式输出一个整数表示 L 的最小值。输入输出样例输入 #1复制4 2 1 5 2 4输出 #1复制3说明/提示评测用例规模与约定对于 40% 的评测用例2≤M≤N≤1031≤Ai​≤103。对于 100% 的评测用例2≤M≤N≤1051≤Ai​≤105。实现代码#include bits/stdc.h using namespace std; using i64 long long; #define endl \n #define all(v) v.begin(), v.end() void sol() { int n, m; cin n m; vectorint A(n); vectori64 B(n); for (int i 0; i n; i) { cin A[i]; B[i] 1LL * A[i] * A[i]; } sort(all(B)); i64 ans LLONG_MAX; for (int i m - 1; i n; i) { ans min(ans, B[i] - B[i - m 1]); } cout ans endl; } int main() { ios::sync_with_stdio(false); cin.tie(nullptr); sol(); return 0; }P12135 [蓝桥杯 2025 省 B] 水质检测提交答案加入题单复制题目题目描述小明需要在一条 2×n 的河床上铺设水质检测器。在他铺设之前河床上已经存在一些检测器。如果两个检测器上下或者左右相邻那么这两个检测器就是互相连通的。连通具有传递性即如果 A 和 B 连通B 和 C 连通那么 A 和 C 也连通。现在他需要在河床上增加铺设一些检测器使得所有的检测器都互相连通。他想知道最少需要增加铺设多少个检测器输入格式输入共两行表示一个 2×n 的河床。每行一个长度为 n 的字符串仅包含#和.其中#表示已经存在的检测器.表示空白。输出格式输出共 1 行一个整数表示答案。输入输出样例输入 #1复制.##.....# .#.#.#...输出 #1复制5说明/提示样例说明其中一种方案.###....# .#.######增加了 5 个检测器。评测用例规模与约定对于 100% 的评测用例保证 n≤1000000。实现代码#include bits/stdc.h using namespace std; int main() { string s1, s2; cin s1 s2; int len s1.size(); int num 0; int l len, r 0; for (int i 0; i len; i) { if (s1[i] # || s2[i] #) { l min(l, i); r max(r, i); } } for (int i l; i r; i) { if (s1[i] # s1[i 1] . s2[i] .) { num; s1[i 1] #; } if (s1[i] . s2[i 1] . s2[i] #) { num; s2[i 1] #; } if (s1[i] # s2[i] # s2[i 1] . s1[i 1] .) { int p i, q i; for (int j i 1; j r; j) { if (s1[j] #) { p j; break; } if (s2[j] #) { q j; break; } } if (p q) { s1[i 1] #; num; } else { s2[i 1] #; num; } } } cout num; return 0; }P12137 [蓝桥杯 2025 省 B] 装修报价题目描述老王计划装修房子于是联系了一家装修公司。该公司有一套自动报价系统只需用户提供 N 项装修相关费用 A1​,A2​,…,AN​系统便会根据这些费用生成最终的报价。然而当老王提交数据后他发现这套系统的运作方式并不透明系统只会给出一个最终报价而不会公开任何运算过程或中间步骤。公司对此解释称这套系统会依据某种内部算法在每对相邻数字之间插入 加法、−减法或 ⊕异或运算符并按照特定优先级规则计算结果异或运算优先级最高其次是加减。但由于保密性具体的运算符组合以及中间过程都不会对外公开。为了验证系统报价是否合理老王决定模拟其运作方式尝试每种可能的运算符组合计算出所有可能出现的结果的总和。如果最终报价明显超出这个范围他就有理由怀疑系统存在异常或误差。只是老王年事已高手动计算颇为吃力便向你求助。现在请你帮老王算出所有可能的结果的总和。由于该总和可能很大你只需提供其对 1097 取余后的结果即可。输入格式第一行输入一个整数 N表示装修相关费用的项数。第二行输入 N 个非负整数 A1​,A2​,…,AN​表示各项费用。输出格式输出一个整数表示所有可能的总和对 1097 取余后的结果。输入输出样例输入 #1复制3 0 2 5输出 #1复制11说明/提示对于输入样例中的三个数 A[0,2,5]所有可能的运算符组合共有 9 种。计算结果如下0⊕2⊕570⊕2570⊕2−5−302⊕57025702−5−30−2⊕5−70−2530−2−5−7所有结果的总和为77(−3)77(−3)(−7)3(−7)1111 对 1097 取余后的值依然为 11因此输出结果为 11。评测用例规模与约定对于 30% 的评测用例1≤N≤130≤Ai​≤103。对于 60% 的评测用例1≤N≤1030≤Ai​≤105。对于 100% 的评测用例1≤N≤1050≤Ai​≤109。实现代码#includebits/stdc.h #define ll long long #define p 1000000007ll using namespace std; ll ans0,sum0;int n; int main(){ cinn;for(int i1,x;in;i)cinx,ans(ans*3-sum(sum^x)p)%p;coutans; return 0; }注P12136 [蓝桥杯 2025 省 B] 生产车间太难了主包也不会哈哈哈

更多文章