[蓝桥杯 2025十六届c++ 省 B] 题解更新中

打印 上一主题 下一主题

主题 1932|帖子 1932|积分 5796

P12130 [蓝桥杯 2025 省 B] 移动间隔 - 洛谷
小明初始在二维平面的原点,他想前往坐标 (233,666)。在移动过程中,他只能接纳以下两种移动方式,而且这两种移动方式可以瓜代、不限次数地使用:

  • 水平向右移动,即沿着 x 轴正方向移动肯定的间隔。
  • 沿着一个圆心在原点 (0,0)、以他当前位置到原点的间隔为半径的圆的圆周移动,移动方向不限(即顺时针或逆时针移动不限)。
在这种条件下,他到达目标地最少移动多少单位间隔?你只需要输出答案四舍五入到整数的结果。
输入格式


输出格式

这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。
输入输出样例



向右走,再画一段圆弧
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. //#define int long long
  4. #define endl '\n'
  5. using u32 = unsigned;
  6. using i64 = long long;
  7. using u64 = unsigned long long;
  8. using PII = pair<int,int>;
  9. const int N=1e5+5;
  10. void solve() {
  11.         int x=233,y=666;
  12.         double r=sqrt(x*x+y*y);
  13.         double a=atan2(y,x);
  14.         int ans=round(a*r+r);
  15.         cout<<ans;
  16. }
  17. signed main() {
  18.         ios::sync_with_stdio(false);
  19.         cin.tie(nullptr);
  20.        
  21.                 solve();
  22.        
  23.        
  24.         return 0;
  25. }
  26. /*
  27. *                        _oo0oo_
  28. *                       o8888888o
  29. *                       88" . "88
  30. *                       (| -_- |)
  31. *                       0\  =  /0
  32. *                     ___/`---'\___
  33. *                   .' \\|     |// '.
  34. *                  / \\|||  :  |||// \
  35. *                 / _||||| -:- |||||- \
  36. *                |   | \\\  - /// |   |
  37. *                | \_|  ''\---/''  |_/ |
  38. *                \  .-\__  '-'  ___/-. /
  39. *              ___'. .'  /--.--\  `. .'___
  40. *           ."" '<  `.___\_<|>_/___.' >' "".
  41. *          | | :  `- \`.;`\ _ /`;.`/ - ` : | |
  42. *          \  \ `_.   \_ __\ /__ _/   .-` /  /
  43. *      =====`-.____`.___ \_____/___.-`___.-'=====
  44. *                        `=---='
  45. *
  46. *
  47. *      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  48. *
  49. *            佛祖保佑       永不宕机     永无BUG
  50. */
复制代码
P12131 [蓝桥杯 2025 省 B] 客流量上限 - 洛谷
一家连锁旅馆在天下拥有 2025 个分店,分别编号为 1 至 2025。随着节日相近,总部决定为每家分店设定每日客流量的上限,分别记作 A1​,A2​,…,A2025​。这些上限并非随意分配,而是需要满足以下束缚条件:

  • A1​,A2​,…,A2025​ 必须是 1 至 2025 的一个分列,即每个 Ai​ 均是 1 至 2025 之间的整数,且所有 Ai​ 互不雷同。
  • 对于恣意分店 i 和 j(1≤i,j≤2025,i 可便是 j),它们的客流量上限 Ai​ 和 Aj​ 的乘积不得超过 i×j+2025。
这些束缚旨在均衡各分店客流压力,确保服务质量和运营稳固性。
现在,请你计算这样的分配方案毕竟有多少种。由于答案可能很大,你只需输出其对 1e9+7 取余后的结果即可。
输入格式


输出格式

这是一道结果填空题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。
输入输出样例




P12132 [蓝桥杯 2025 省 B] 可分解的正整数 - 洛谷
界说一种特殊的整数序列,这种序列由一连递增的整数构成,并满足以下条件:

  • 序列长度至少为 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复制
  1. 3
  2. 3 6 15
复制代码
输出 #1复制
  1. 3
复制代码
阐明/提示

样例阐明



  • Ai​=3 是可分解的,由于 [0,1,2] 的和为 0+1+2=3。
  • Ai​=6 是可分解的,由于 [1,2,3] 的和为 1+2+3=6。
  • Ai​=15 是可分解的,由于 [4,5,6] 的和为 4+5+6=15。
所以可分解的正整数的数目为 3。
评测用例规模与约定



  • 对于 30% 的评测用例,1≤N≤100,1≤Ai​≤100。
  • 对于 100% 的评测用例,1≤N≤1e5,1≤Ai​≤1e9。

除了1所有的正整数都可以,从(-a+1)到 a
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. //#define int long long
  4. #define endl '\n'
  5. using u32 = unsigned;
  6. using i64 = long long;
  7. using u64 = unsigned long long;
  8. using PII = pair<int,int>;
  9. const int N=1e5+5;
  10. void solve() {
  11.         int n;
  12.         cin >> n;
  13.         int a,ans=n;
  14.         for(int i=1;i<=n;i++){
  15.                 cin>>a;
  16.                 if(a==1)ans--;
  17.         }
  18.         cout<<ans;
  19. }
  20. signed main() {
  21.         ios::sync_with_stdio(false);
  22.         cin.tie(nullptr);
  23.        
  24.                 solve();
  25.        
  26.        
  27.         return 0;
  28. }
  29. /*
  30. *                        _oo0oo_
  31. *                       o8888888o
  32. *                       88" . "88
  33. *                       (| -_- |)
  34. *                       0\  =  /0
  35. *                     ___/`---'\___
  36. *                   .' \\|     |// '.
  37. *                  / \\|||  :  |||// \
  38. *                 / _||||| -:- |||||- \
  39. *                |   | \\\  - /// |   |
  40. *                | \_|  ''\---/''  |_/ |
  41. *                \  .-\__  '-'  ___/-. /
  42. *              ___'. .'  /--.--\  `. .'___
  43. *           ."" '<  `.___\_<|>_/___.' >' "".
  44. *          | | :  `- \`.;`\ _ /`;.`/ - ` : | |
  45. *          \  \ `_.   \_ __\ /__ _/   .-` /  /
  46. *      =====`-.____`.___ \_____/___.-`___.-'=====
  47. *                        `=---='
  48. *
  49. *
  50. *      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  51. *
  52. *            佛祖保佑       永不宕机     永无BUG
  53. */
复制代码
P12133 [蓝桥杯 2025 省 B] 产值调整 - 洛谷
偏远的小镇上,三兄弟共同经营着一家小型矿业公司“兄弟矿业”。公司旗下有三座矿山:金矿、银矿和铜矿,它们的初始产值分别用非负整数 A、B 和 C 表现。这些矿山的产出是小镇经济的核心,支撑着三兄弟和许多矿工家庭的生计。
然而,各矿山的产值波动剧烈,偶尔金矿收益高而银矿、铜矿低迷,偶尔则相反。这种不稳固性让公司收入难以猜测,也常引发兄弟间的争执。为了稳固经营,三兄弟设计了一个公平的产值调整策略,每年执行一次,每次调整时,将根据当前的产值 A、B、C,计算新产值:

  • 金矿新产值:A′=⌊2B+C​⌋;
  • 银矿新产值:B′=⌊2A+C​⌋;
  • 铜矿新产值:C′=⌊2A+B​⌋;
此中,⌊⌋ 表现向下取整。例如,⌊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复制
  1. 2
  2. 10 20 30 1
  3. 5 5 5 3
复制代码
输出 #1复制
  1. 25 20 15
  2. 5 5 5
复制代码
阐明/提示

评测用例规模与约定



  • 对于 30% 的评测用例,1≤T≤100,1≤A,B,C,K≤1e5。
  • 对于 100% 的评测用例,1≤T≤1e5,1≤A,B,C,K≤1e9。
可以看出肯定会有循环,一直模拟直到k或者中途有循环跳出
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. //#define int long long
  4. #define endl '\n'
  5. using u32 = unsigned;
  6. using i64 = long long;
  7. using u64 = unsigned long long;
  8. using PII = pair<int,int>;
  9. const int N=1e5+5;
  10. struct node{
  11.         int a, b, c;
  12.        
  13.         bool operator < (const node& other) const {
  14.                 if (a != other.a) return a < other.a;
  15.                 if (b != other.b) return b < other.b;
  16.                 return c < other.c;
  17.         }
  18. };
  19. void solve() {
  20.         int a, b, c, k;
  21.         cin >> a >> b >> c >> k;
  22.         set<node> se;
  23.         auto d = node{a, b, c};
  24.         se.insert(d);
  25.         int a1, b1, c1;
  26.         int cnt=0;
  27.         while (cnt++<k) {
  28.                 int s1 = se.size();
  29.                 a1 = (b + c) / 2;
  30.                 b1 = (a + c) / 2;
  31.                 c1 = (a + b) / 2;
  32.                 se.insert(node{a1, b1, c1});
  33.                 if ((int)se.size() == s1) break;
  34.                 a = a1, b = b1, c = c1;
  35.         }
  36.         cout << a << ' ' << b << ' ' << c << endl;
  37. }
  38. signed main() {
  39.         ios::sync_with_stdio(false);
  40.         cin.tie(nullptr);
  41.        
  42.         int t;
  43.         cin >> t;
  44.         while (t--)
  45.                 solve();
  46.        
  47.         return 0;
  48. }
复制代码
P12134 [蓝桥杯 2025 省 B] 画展部署 - 洛谷
画展策展人小蓝和助理小桥为即将举办的画展准备了 N 幅画作,其艺术价值分别为 A1​,A2​,…,AN​。他们需要从这 N 幅画中挑选 M 幅,并按照肯定顺序部署在展厅的 M 个位置上。如果随意挑选和分列,艺术价值的变化可能会过于突兀,导致观众的观展体验不敷流畅。
为了优化部署,他们查阅了《画展部署指南》。指南指出,理想的画展应使观众在欣赏画作时,艺术价值的过渡只管平缓。指南发起,选择并分列 M 幅画,应使艺术价值的变化程度通过一个数值 L 来权衡,且该值越小越好。数值 L 的界说为:

此中 Bi​ 表现展厅第 i 个位置上画作的艺术价值。
现在,他们盼望通过精心挑选和分列这 M 幅画作,使 L 到达最小值,以提升画展的整体和谐性。请你帮他们计算出这个最小值是多少。
输入格式

输入共两行。
第一行包罗两个正整数 N 和 M,分别表现画作的总数和需要挑选的画作数目。
第二行包罗 N 个正整数 A1​,A2​,…,AN​,表现每幅画作的艺术价值。
输出格式

输出一个整数,表现 L 的最小值。
输入输出样例

输入 #1复制
  1. 4 2
  2. 1 5 2 4
复制代码
输出 #1复制
  1. 3
复制代码
阐明/提示

评测用例规模与约定



  • 对于 40% 的评测用例,2≤M≤N≤1e3,1≤Ai​≤1e3。
  • 对于 100% 的评测用例,2≤M≤N≤1e5,1≤Ai​≤1e5。

从小到大排序,然后实验所有选一连m个的方式,双指针
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. #define int long long
  4. #define endl '\n'
  5. using u32 = unsigned;
  6. using i64 = long long;
  7. using u64 = unsigned long long;
  8. using PII = pair<int,int>;
  9. const int N=1e5+5;
  10. void solve() {
  11.         int n,m;
  12.         cin>>n>>m;
  13.         vector<int>a(n);
  14.         for(int i=0;i<n;i++){
  15.                 cin>>a[i];
  16.         }
  17.         sort(a.begin(),a.end());
  18.         int sum=0;
  19.         for(int i=0;i<m-1;i++){
  20.                 sum+=a[i+1]*a[i+1]-a[i]*a[i];
  21.         }
  22.         int ans=sum;
  23.         for(int i=0,j=m-1;j<n-1;i++,j++){
  24.                 sum-=a[i+1]*a[i+1]-a[i]*a[i];
  25.                 sum+=a[j+1]*a[j+1]-a[j]*a[j];
  26.                 //cout<<sum<<endl;
  27.                 ans=min(ans,sum);
  28.         }
  29.         cout<<ans;
  30. }
  31. signed main() {
  32.         ios::sync_with_stdio(false);
  33.         cin.tie(nullptr);
  34.        
  35.         solve();
  36.        
  37.         return 0;
  38. }
复制代码
P12135 [蓝桥杯 2025 省 B] 水质检测 - 洛谷
小明需要在一条 2×n 的河床上铺设水质检测器。在他铺设之前,河床上已经存在一些检测器。如果两个检测器上下或者左右相邻,那么这两个检测器就是互相连通的。连通具有通报性,即如果 A 和 B 连通,B 和 C 连通,那么 A 和 C 也连通。现在他需要在河床上增加铺设一些检测器使得所有的检测器都互相连通。他想知道最少需要增加铺设多少个检测器?
输入格式

输入共两行,表现一个 2×n 的河床。
每行一个长度为 n 的字符串,仅包罗 # 和 .,此中 # 表现已经存在的检测器,. 表现空白。
输出格式

输出共 1 行,一个整数表现答案。
输入输出样例

输入 #1复制
  1. .##.....#
  2. .#.#.#...
复制代码
输出 #1复制
  1. 5
复制代码
阐明/提示

样例阐明

此中一种方案:
  1. .###....#
  2. .#.######
复制代码
增加了 5 个检测器。
评测用例规模与约定

对于 100% 的评测用例,包管 n≤1000000。


P12136 [蓝桥杯 2025 省 B] 生产车间 - 洛谷
小明正在改造一个生产车间的生产流水线。这个车间共有 n 台设备,构成以 1 为根结点的一棵树,结点 i 有权值 wi​。此中叶节点的权值 wi​ 表现每单位时间将产出 wi​ 单位的材料并送往父结点,根结点的权值 wi​ 表现每单位时间内能打包多少单位成品,其他结点的权值 wi​ 表现每单位时间最多能加工 wi​ 单位的材料并送往父结点。
由于当宿世产线中某些结点存在产能不敷的标题导致生产线无法正常运行,即存在某些结点每单位时间收到的材料超过了当前结点的加工本领上限。小明计划删除一些结点使得所有结点都能正常运行。他想知道删除一些结点后根结点每单位时间内最多能打包多少单位的成品?
输入格式

输入共 n+1 行。
第一行为一个正整数 n。
第二行为 n 个由空格分开的正整数 w1​,w2​,…,wn​。
后面 n−1 行,每行两个整数表现树上的一条边毗连的两个结点。
输出格式

输出共一行,一个整数代表答案。
输入输出样例

输入 #1复制
  1. 9
  2. 9 7 3 7 1 6 2 2 7
  3. 1 2
  4. 1 3
  5. 2 4
  6. 2 5
  7. 2 6
  8. 6 7
  9. 6 8
  10. 6 9
复制代码
输出 #1复制
  1. 8
复制代码
阐明/提示

样例阐明

删掉结点 4、9 后生产线满足条件,根结点 1 每单位时间将打包出 8 单位的成品。
评测用例规模与约定



  • 对于 20% 的评测用例,2≤n≤100。
  • 对于 100% 的评测用例,2≤n≤1000,1≤wi​≤1000。


P12137 [蓝桥杯 2025 省 B] 装修报价 - 洛谷
老王计划装修房子,于是接洽了一家装修公司。该公司有一套自动报价体系,只需用户提供 N 项装修相关费用 A1​,A2​,…,AN​,体系便会根据这些费用生成最终的报价。
然而,当老王提交数据后,他发现这套体系的运作方式并不透明:体系只会给出一个最终报价,而不会公开任何运算过程或中间步骤。
公司对此表明称,这套体系会依据某种内部算法,在每对相邻数字之间插入 +(加法)、−(减法)或 ⊕(异或)运算符,并按照特定优先级规则计算结果:异或运算优先级最高,其次是加减。但由于保密性,具体的运算符组合以及中间过程都不会对外公开。
为了验证体系报价是否公道,老王决定模拟其运作方式,实验每种可能的运算符组合,计算出所有可能出现的结果的总和。如果最终报价显着超出这个范围,他就有来由怀疑体系存在异常或偏差。只是老王年事已高,手动计算颇为吃力,便向你告急。
现在,请你帮老王算出所有可能的结果的总和。由于该总和可能很大,你只需提供其对 109+7 取余后的结果即可。
输入格式

第一行输入一个整数 N,表现装修相关费用的项数。
第二行输入 N 个非负整数 A1​,A2​,…,AN​,表现各项费用。
输出格式

输出一个整数,表现所有可能的总和对 109+7 取余后的结果。
输入输出样例

输入 #1复制
  1. 3
  2. 0 2 5
复制代码
输出 #1复制
  1. 11
复制代码
阐明/提示

对于输入样例中的三个数 A=[0,2,5],所有可能的运算符组合共有 9 种。计算结果如下:
0⊕2⊕5=70⊕2+5=70⊕2−5=−30+2⊕5=70+2+5=70+2−5=−30−2⊕5=−70−2+5=30−2−5=−7
所有结果的总和为:
7+7+(−3)+7+7+(−3)+(−7)+3+(−7)=11
11 对 109+7 取余后的值依然为 11,因此,输出结果为 11。
评测用例规模与约定



  • 对于 30% 的评测用例,1≤N≤13,0≤Ai​≤103。
  • 对于 60% 的评测用例,1≤N≤103,0≤Ai​≤105。
  • 对于 100% 的评测用例,1≤N≤105,0≤Ai​≤109。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

盛世宏图

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表