蓝桥杯-2026年C++B组省赛
题目来源于洛谷省一代码分享P16232 [蓝桥杯 2026 省 B] 青春常数题目背景本站蓝桥杯 2026 省赛测试数据均为洛谷自造与官方数据可能存在差异仅供学习参考。题目描述小蓝与蓝桥杯的缘分已经走到了第四个年头。从 2023 年的初出茅庐到 2024、2025 年的披荆斩棘而今年的 2026 年将是他大学生涯最后一次站上这个赛场。退役前夕百感交集的小蓝在草稿纸上将这四届参赛的年份倒序写下拼接成了一个巨大的整数 N2026202520242023。在整理四年的竞赛心得时他决定将这一常数 N 拆分为两个非负整数 x 和 y分别代表他这段旅程的前半段积累与后半段突破。按照拆分规则这两部分的数值之和必须恰好等于 N即 xyN。同时由于在后半段赛程中小蓝积累了更深厚的算法功底因此后半部分的数值 y 必须严格大于前半部分的数值 x即 0≤xy。现在请你计算满足上述条件的整数对 (x,y) 共有多少个输入格式无输出格式这是一道结果填空题你只需要算出结果后提交即可。本题的结果为一个整数在提交答案时只填写这个整数填写多余的内容将无法得分。输入输出样例输入 #1复制输出 #1复制实现代码#includebits/stdc.h using namespace std; int main(){ cout1013101260121012; return 0; }P16234 [蓝桥杯 2026 省 B] 循环右移题目背景本站蓝桥杯 2026 省赛测试数据均为洛谷自造与官方数据可能存在差异仅供学习参考。题目描述给定三个整数 N,X,Y。请计算有多少个长度为 N 的整数数组 A 满足以下条件数组 A 中的每个元素 Ai 都满足 X≤Ai≤Y对于数组 A 中的任意一个连续子数组对其进行一次循环右移操作得到的新子数组与原数组完全一致。循环右移对一个长度为 k 的连续子数组 [B1,B2,…,Bk] 执行一次循环右移操作是指将该子数组变换为 [Bk,B1,B2,...,Bk−1]即把最后一个元素移到最开头其余元素保持原有顺序依次向后顺延一位。输入格式第一行包含一个整数 T表示测试数据的组数。接下来的 T 行每行包含三个由空格隔开的整数 N,X,Y。输出格式对于每组测试数据输出一行包含一个整数表示满足条件的数组 A 的个数。输入输出样例输入 #1复制3 3 1 2 5 10 10 2 5 3输出 #1复制2 1 0说明/提示【评测用例规模与约定】对于 30% 的评测用例1≤T≤20, 1≤N≤100, 1≤X,Y≤100;对于 100% 的评测用例1≤T≤103, 1≤N≤1018, 1≤X,Y≤1018。实现代码#includebits/stdc.h using namespace std; int main() { ios::sync_with_stdio(0), cin.tie(0); int T; cin T; while (T--) { long long N, X, Y; cin N X Y; if (X Y) cout 0\n; else cout Y - X 1 \n; } return 0; }P16235 [蓝桥杯 2026 省 B] 蓝桥竞技题目描述小蓝作为电竞俱乐部“蓝桥竞技”的战队经理正面临着一个巨大的管理危机。俱乐部目前签约了 N 种不同位置的职业选手其中第 i 种位置的选手共有 Ai 名。为了参加即将举办的“峡谷 5v5”小蓝必须将俱乐部内的所有选手都编入战队不能有任何一人坐冷板凳。根据赛事组委会的严苛规则一支合法的战队必须满足以下条件5 人成团每支战队由且只能由 5 名选手组成。职业互斥同一支战队内的 5 名选手必须来自 5 种完全不同的位置。现在请你帮助小蓝判断在当前的人员数量下是否有一种分组方案能够将所有选手恰好分配完且每支战队都符合参赛规则输入格式第一行包含一个整数 T表示测试用例组数。接下来包含 T 组数据每组数据的格式如下第一行包含一个整数 N表示职业位置的种类数量。第二行包含 N 个整数 A1,A2,…,AN分别表示第 i 种位置的选手人数。输出格式对于每组测试用例如果存在满足条件的分组方案输出 T否则输出 F。输入输出样例输入 #1复制4 5 1 1 1 1 1 6 2 2 2 2 1 1 5 1 1 1 1 2 6 3 1 1 1 2 2输出 #1复制T T F F说明/提示【样例说明】第一组数据共有 5 名选手各占 1 个位置恰好可以组成 1 支战队。第二组数据共有 10 名选手可以分成 2 支战队。一种合法的分配方案是战队一由位置 1,2,3,4,5 的选手组成战队二由位置 1,2,3,4,6 的选手组成。第三、四组数据不存在满足条件的分组方案。【评测用例规模与约定】对于 30% 的评测用例1≤T≤5, 1≤N≤20, 0≤Ai≤100;对于 100% 的评测用例1≤T≤103, 1≤N≤105, 0≤Ai≤109且保证所有测试用例中 N 的总和不超过 2×105。实现代码#includebits/stdc.h using namespace std; typedef long long ll; void solve() { int n; cin n; vectorll a(n); ll s 0; ll m 0; for (int i 0; i n; i) { cin a[i]; s a[i]; if (a[i] m) m a[i]; } if (s % 5 ! 0) { cout F endl; return; } ll k s / 5; if (m k) { cout F endl; return; } cout T endl; } int main() { ios::sync_with_stdio(false); cin.tie(nullptr); int t; cin t; while (t--) { solve(); } return 0; }P16236 [蓝桥杯 2026 省 B] LQ 聚合题目描述2056 年探险队在月球背面的环形山深处发现了一座信号发射塔其核心控制台正在不断闪烁着一串长度为 N 的粒子序列。序列中的每个位置被严格定义为 L 型粒子、Q 型粒子或者因岁月侵蚀而模糊不清的未知状态 ?。这些粒子将被依次射入反应场而反应场的稳定性取决于序列的“LQ 聚合”数量该数量被定义为所有满足 1≤ij≤N 且第 i 个节点为 L、第 j 个节点为 Q 的二元组数量。为了重启这座沉睡的巨塔探险队需要将序列中所有的 ? 修复为确定的 L 或 Q。现在请你计算出在所有可能的修复方案中所能得到的“LQ 聚合”数量的最大值是多少。输入格式第一行输入一个整数 N表示粒子序列的长度。第二行输入一个长度为 N 的字符串仅包含字符 L、Q 和 ?表示当前探测到的粒子序列状态。输出格式输出一个整数表示在将所有 ? 替换为 L 或 Q 后能获得的最大“LQ 聚合”数量。输入输出样例输入 #1复制5 ??L??输出 #1复制6说明/提示【样例说明】一种最优的策略是将序列修复为 LLLQQ。此时位于前面的 3 个 L 与位于后面的 2 个 Q 共可产生 3×26 个聚合。【评测用例规模与约定】对于 30% 的评测用例字符串 ? 的个数不超过 10。对于所有评测用例2≤N≤105。实现代码#include bits/stdc.h using namespace std; int main() { ios::sync_with_stdio(false); cin.tie(nullptr); int n; string s; cin n s; long long totQ 0; for (char c : s) if (c Q) totQ; long long curL 0, curQ 0; long long base 0; vectorint lp; vectorint qb; for (int i 0; i n; i) { char c s[i]; if (c L) { curL; } else if (c Q) { base curL; curQ; } else { lp.push_back((int)curL); qb.push_back((int)curQ); } } int m lp.size(); vectorlong long preL(m 1, 0), preQ(m 1, 0); for (int i 1; i m; i) { preL[i] preL[i - 1] lp[i - 1]; preQ[i] preQ[i - 1] (curQ - qb[i - 1]); } long long totalLpref preL[m]; long long ans 0; for (int k 0; k m; k) { long long cur base (totalLpref - preL[k]) preQ[k] 1LL * k * (m - k); if (cur ans) ans cur; } cout ans \n; return 0; }P16237 [蓝桥杯 2026 省 B] 应急布线题目描述实验室内小蓝负责维护一个由 N 台计算机组成的局域网络。这些计算机原本通过高速网线互联但随着设备老化目前仅剩 M 条网线还能正常工作。正因如此原本统一的网络分裂成了多个互不相连的通信区域。为了恢复通信小蓝计划架设一种特殊的“应急跳线”来重新连接这些区域。在物理逻辑上只要任意两台计算机之间可以通过残存的网线或新架设的应急跳线建立直接或间接的通路即视为它们之间恢复了连通。小蓝的任务是选定最优的布线方案使得实验室内的所有 N 台计算机重新回到全连通的状态。由于应急跳线的接口会占用计算机宝贵的硬件资源小蓝在制定方案时设定了两个优先层级首先必须确保使用的应急跳线总数达到理论上的最小值其次为了减轻单台计算机的负载压力他要求尽可能平均地分摊这些跳线。具体而言他需要寻找一种方案使得在所有计算机中接入这种应急跳线数量最多的那一台机器其接入的跳线数降到最低。现在请你根据当前网线的残存连接情况计算出实现全连通所需的最少应急跳线数量以及在这一最优前提下单台计算机接入应急跳线数量最大值的最小可能值。输入格式第一行包含两个整数 N 和 M分别表示计算机的总数和目前完好的网线数量。接下来的 M 行每行包含两个整数 a 和 b表示计算机 a 和 b 之间目前仍存在一条完好的网线。输出格式输出一行包含两个由单个空格隔开的整数。第一个整数表示最少需要添加的应急跳线数量第二个整数表示在确保跳线总数最少的前提下单台计算机接入跳线数量最大值的最小可能值。输入输出样例输入 #1复制7 2 1 2 2 3输出 #1复制4 2说明/提示【样例说明】通过连接 1−4, 4−5, 5−6, 6−7共计 4 条跳线可以使节点 4,5,6 各承担两条跳线而其他节点仅承担一条或不承担从而使最大值达到最小值为 2。【评测用例规模与约定】对于 30% 的评测用例1≤N≤100, 0≤M≤100;对于所有评测用例1≤N≤105, 0≤M≤105, 1≤a,b≤N, ab。保证输入的连接信息中不包含重边。实现代码#include bits/stdc.h using namespace std; struct DSU { vectorint p, r; DSU(int n) : p(n), r(n, 0) { iota(p.begin(), p.end(), 0); } int find(int x) { return p[x] x ? x : p[x] find(p[x]); } void unite(int a, int b) { a find(a); b find(b); if (a b) return; if (r[a] r[b]) swap(a, b); p[b] a; if (r[a] r[b]) r[a]; } }; int main() { ios::sync_with_stdio(false); cin.tie(nullptr); int N, M; cin N M; DSU d(N); for (int i 0; i M; i) { int a, b; cin a b; --a; --b; d.unite(a, b); } int C 0; for (int i 0; i N; i) if (d.find(i) i) C; long long edges_needed C - 1; long long need 2LL * edges_needed; long long D (need N - 1) / N; cout edges_needed D \n; return 0; }P16238 [蓝桥杯 2026 省 B] 理想温度题目描述一条工业流水线上排列着 n 个温度传感器。当前各个传感器测得的温度记录在数组 A 中而各传感器对应的理想标准温度记录在数组 B 中即 Ai 为第 i 个传感器的当前温度Bi 为第 i 个传感器的理想温度。为了让尽可能多的传感器达到理想温度你可以进行一次区域温度补偿操作在流水线上划定一段连续的传感器区间 [l,r]即第 l 个到第 r 个传感器。输入一个温度补偿值 kk 为任意整数使得该区间内所有传感器的当前温度都加上 k。请问在执行完这一次校准操作后最多能使多少个传感器的温度恰好等于其对应的理想标准温度输入格式第一行包含一个整数 n表示传感器的数量。第二行包含 n 个整数 A1,A2,…,An表示各传感器的当前温度。第三行包含 n 个整数 B1,B2,…,Bn表示各传感器对应的理想标准温度。输出格式输出一行包含一个整数表示补偿操作后处于理想温度的传感器最大数量。输入输出样例输入 #1复制5 1 2 3 4 5 2 3 2 3 2输出 #1复制2说明/提示【评测用例规模与约定】对于 30% 的评测用例保证 1≤n≤2000对于所有评测用例保证 1≤n≤2×105, −109≤Ai,Bi≤109。实现代码#includebits/stdc.h using namespace std; int main(){ ios::sync_with_stdio(0); cin.tie(0); int n; cinn; vectorint a(n), b(n), d(n), p(n1, 0); for(int i0;in;i) cina[i]; vectorpairint,int v; for(int i0;in;i){ cinb[i]; d[i]b[i]-a[i]; p[i1]p[i](d[i]0); if(d[i]!0) v.push_back({d[i], i1}); } sort(v.begin(), v.end()); int ansp[n]; int szv.size(); for(int i0;isz;){ int ji; while(jszv[j].firstv[i].first) j; int min_v0, max_d0; for(int ki;kj;k){ int idxv[k].second; int cntk-i1; min_vmin(min_v, (cnt-1)-p[idx-1]); max_dmax(max_d, cnt-p[idx]-min_v); } ansmax(ans, p[n]max_d); ij; } coutans\n; return 0; }
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2603390.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!