蓝桥杯 2025 C++组 省 B 题解

可分解的正整数

算法:思维

因为可以有负数 所以除了1以外的任何数都可以构造

当这个数为x构造方法为

-(x-1)  -(x-2)  -(x-3) ....-1 0 1...x-3 x-2 x-1 x

除了x,x以前的数都会被负数抵消

#include <bits/stdc++.h>
#define ll long long
ll a[100005];
using namespace std;
int main() {ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);ll n;cin>>n;for(int i=1;i<=n;i++){cin>>a[i];}ll ans=0;for(int i=1;i<=n;i++){if(a[i]!=1) ans++;}cout<<ans<<"\n";return 0;
}

产值调整

算法:思维 打表

当三个数相同时 不管怎么调整 结果不会发生改变,所以当三个数相同时break即可

根据模拟题目要求打表后发现,调整100次后 所有数都会变成相同的,所以break后不会使代码超时

#include <bits/stdc++.h>
#define ll long long
ll a[100005];
using namespace std;
int main() {ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);ll t;cin>>t;while(t--){ll a,b,c,k;cin>>a>>b>>c>>k;for(int i=1;i<=k;i++){ll na,nb,nc;na=(b+c)/2;nb=(a+c)/2;nc=(a+b)/2;a=na;b=nb;c=nc;if(a==b and b==c) break;}cout<<a<<" "<<b<<" "<<c<<" "<<"\n";}return 0;
}

画展布置

算法:前缀和
观察计算公式 需要用到的数皆为平方 提前处理 将每个数平方后 公式将被简化为 每两个数之间的差的和 贪心的思考 使得一组数相邻两个数之间差的和最小 数组有序为最优 先排序 排序后枚举开始的位置 求当前位置到当前位置+m位置的差的和 使用前缀和预处理每个位置的前缀和查询即可。

#include <bits/stdc++.h>
#define ll long long
ll a[100005],b[100005],c[100005];
using namespace std;
int main() {ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);ll n,m;cin>>n>>m;for(int i=1;i<=n;i++){cin>>a[i];}sort(a+1,a+1+n);for(int i=1;i<n;i++){b[i]=a[i+1]*a[i+1]-a[i]*a[i];}for(int i=1;i<n;i++){c[i]=c[i-1]+b[i];}ll ans=1e18;for(int i=1;i<=n-m+1;i++){ans=min(ans,c[i+m-2]-c[i-1]);}cout<<ans<<"\n";return 0;
}

水质检测

算法:模拟

按题目要求模拟即可,唯一需要贪心的点,即为

#.
.#

的情况 从左往右判断时 若要使它们联通 最优的方案为

##
.#
#include <bits/stdc++.h>
#define ll long long
using namespace std;
int main() {ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);string s[2];cin>>s[0]>>s[1];ll n=s[0].size();s[0]=" "+s[0];s[1]=" "+s[1];ll ans=0;ll l=0,r=0;for(int i=1;i<=n;i++){if((s[0][i]=='#' || s[1][i]=='#') && l==0){l=i;}if((s[0][i]=='#' || s[1][i]=='#')){r=i;}}ll cnt=-1;if(s[0][l]=='.' && s[1][l]=='#') cnt=1;if(s[1][l]=='.' && s[0][l]=='#') cnt=0;for(int i=l+1;i<=r;i++){if(s[0][i]=='.' && s[1][i]=='.'){ans++;}else if(s[0][i]=='#' && s[1][i]=='.'){if(cnt==1){cnt=-1;ans++;}else{cnt=0;}}else if(s[0][i]=='.' && s[1][i]=='#'){if(cnt==0){cnt=-1;ans++;}else{cnt=1;}}else{cnt=-1;}}cout<<ans<<"\n";return 0;
}

生产车间

算法:树形DP/树上DP

先考虑这道题 但没考虑出来 开始蹭分

于是输出根的权值获得(洛谷50%)

#include <bits/stdc++.h>
#define ll long long
using namespace std;
ll a[1005];
int main() {ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);ll n;cin>>n;ll ans=0;for(int i=1;i<=n;i++){cin>>a[i];}for(int i=1;i<n;i++) {ll o,p;cin>>o>>p;}cout<<a[1];return 0;
}

装修报价

方案1:DFS爆搜(30%分)

算法:DFS

为每两个数字之间遍历它们是否为异或。如果当前位置为异或,则提前计算,并储存它们异或后的数字序列。 然后遍历每个位置是‘+’还是‘-’并计算,加入答案。

#include <bits/stdc++.h>
#define ll long long
ll a[100005];
using namespace std;
const ll MOD = 1e9 + 7;
ll ans=0;ll n;
void dfs2(vector<ll> v){if(v.size()==1){ans+=v[0];ans%=MOD;return;}ll it=v[v.size()-1];v.pop_back();v[0]+=it;dfs2(v);v[0]-=it;v[0]-=it;dfs2(v);
}
void dfs(vector<ll> v,ll x){if(x>n) {dfs2(v);return;}v.push_back(a[x]);dfs(v,x+1);v.pop_back();if(v.size()){ll tp=v[v.size()-1];v[v.size()-1]^=a[x];dfs(v,x+1);v[v.size()-1];}
}
int main() {ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);cin>>n;vector<ll> d;ll now=0;for(int i=1;i<=n;i++){cin>>a[i];now^=a[i];}dfs(d,1);cout<<ans<<"\n";return 0;
}

方案2:数学 规律 打表(100%分)

时间复杂度:O(n)

每个数字后都存在‘+’和‘-’,无论之后的数字间填写什么符号,结果都会被抵消,但从第一个位置异或到第i个位置的答案会保留(1<=i<=n)。

位置1异或到3 (1组)
0⊕2⊕5=7
位置1异或到2 (2组)位置3和它之后的都被抵消
0⊕2  +5=7
0⊕2  −5=−3
位置1 (6组) 位置2和它之后的都被抵消
0  +2⊕5=7
0  −2⊕5=−70  +2−5=−3
0  −2+5=30  +2+5=7
0  −2−5=−7

所以最后的结果为

第一个数字 1组

第一个数字异或到第二个数字 2组

第二个数字异或到第三个数字 6组

第三个数字异或到第四个数字 18组

从第n-1个数字前 每个位置的组数是后一个的三倍 依次递增求和即可

#include <bits/stdc++.h>
#define ll long long
ll a[100005];
using namespace std;
const ll MOD = 1e9 + 7;
ll ans=0;ll n;
int main() {ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);cin>>n;vector<ll> d;ll now=0;for(int i=1;i<=n;i++){cin>>a[i];now^=a[i];}ll op=2;ans+=now;now^=a[n];ll tp=0;for(int i=n-1;i>=1;i--){ans+=now*op;ans%=MOD;now^=a[i];op*=3;op%=MOD;}ans%=MOD;ans+=MOD;ans%=MOD;cout<<ans<<"\n";return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/76692.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

docker创建容器添加启动--restart选项

一、通过 Docker 命令直接修改已启动的容器&#xff08;推荐-已验证&#xff09; 操作步骤&#xff1a; 1.执行更新命令&#xff1a; docker update --restartalways <容器名或ID>此命令会将容器的重启策略调整为 always&#xff08;无论容器以何种状态退出&#xff0…

redission锁释放失败处理

redission锁释放失败处理 https://www.jianshu.com/p/055ae798547a 就是可以删除 锁的key 这样锁就释放了&#xff0c;但是 还是要结合业务&#xff0c;这种是 非正规的处理方式&#xff0c;还是要在代码层面进行处理。

【语音识别】vLLM 部署 Whisper 语音识别模型指南

目录 1. 模型下载 2. 环境安装 3. 部署脚本 4. 服务测试 语音识别技术在现代人工智能应用中扮演着重要角色&#xff0c;OpenAI开源的Whisper模型以其出色的识别准确率和多语言支持能力成为当前最先进的语音识别解决方案之一。本文将详细介绍如何使用vLLM&#xff08;一个高…

Windows Server 2019 安装 Docker 完整指南

博主本人使用的是离线安装 1. 安装前准备 系统要求 操作系统&#xff1a;Windows Server 2019&#xff08;或 2016/2022&#xff09;权限&#xff1a;管理员权限的 PowerShell网络&#xff1a;可访问互联网&#xff08;或离线安装包&#xff09; 启用容器功能 Install-Win…

C# 混淆代码工具--ConfuserEx功能与使用指南

目录 1 前言1.1 可能带来的问题 2 ConfuserEx2.1 简介2.2 功能特点2.3 基本使用方法2.4 集成到MSBuild2.5 深入设置2.5.1 保护机制2.5.1.1 ConfuserEx Protection 2.5.2 精细的代码保护主要特性1. decl-type(string)2.full-name(string)3. is-public()4. match(string)5. match…

c# 新建不重名的唯一文件夹

在源文件夹内创建唯一目标文件夹 string newFolder GetUniqueFolderName(sourceFolder); Directory.CreateDirectory(newFolder); /// <summary>/// 生成唯一文件夹名称&#xff08;格式&#xff1a;新建文件夹、新建文件夹1、新建文件夹2...&#xff09;…

3D案例丨多个3D工业相机拼接检测 开启360°新视界

在高速生产线上&#xff0c;经常需要在极短的时间内对工件进行全方位的外观检测&#xff0c;如&#xff1a;线缆直径和直线度检测、锂电池外观缺陷检测、铁轨截面尺寸检测等。 这需要传感器完整还原被测物的截面面轮廓形状&#xff0c;并获取精准的截面轮廓数据。但单一相机的…

openapi + knife4j的使用

一、依赖作用与关系 1. springdoc-openapi-starter-webmvc-api • 核心功能&#xff1a; 基于 OpenAPI 3 规范&#xff0c;自动生成 API 文档元数据&#xff08;JSON 格式&#xff09;&#xff0c;并集成 Spring MVC。 提供Tag Operation、Schema 等注解&#xff0c;支持通过…

解决电脑问题——突然断网!

电脑如果突然断网是怎么回事 电脑突然断网可能由多种原因造成&#xff0c;以下是常见的因素&#xff1a; 网络连接与权限问题 路由器或调制解调器故障&#xff1a;路由器或调制解调器可能出现硬件故障、软件故障或设置错误。可以尝试重启设备&#xff0c;如果问题依旧&#…

区块链从专家到小白

文章目录 含义应用场景典型特征 含义 以非对称加密算法为基础。 每个**区块&#xff08;Block&#xff09;**包含&#xff1a; ​交易数据​&#xff08;如转账记录、合约内容&#xff09;。 ​时间戳​&#xff08;记录生成时间&#xff09;。 ​哈希值​&#xff08;当前区…

git 提交标签

Git 提交标签 提交消息格式&#xff1a; <type>: <description> &#xff08;示例&#xff1a;git commit -m "feat: add user login API"&#xff09; 标签适用场景feat新增功能&#xff08;Feature&#xff09;。fix修复 Bug&#xff08;Bug fix&…

微信小程序:动态表格实现,表头单元格数据完全从data中获取,宽度自定义,自定义文本框,行勾选,样式效果,横向滚动表格(解决背景色不足的问题)等

一、样式效果 二、代码 1、wxml <view class"line flex flex-center"><view class"none" wx:if"{{info.length 0}}">暂无料号</view><view wx:else class"table-container"><!-- 动态生成表头 -->&…

探索 MCP 和 A2A 协议: 本质上新协议都基于 HTTP的

以下是以 CSDN 博客的形式记录你对 MCP 协议和 A2A 协议数据传递的理解&#xff0c;重点探讨了它们为何基于 HTTP 协议、HTTP 的优势&#xff0c;以及数据传输的本质。文章面向技术社区&#xff0c;结构清晰&#xff0c;适合分享。 探索 MCP 和 A2A 协议&#xff1a;为何新协议…

[redis进阶一]redis的持久化(2)AOF篇章

目录 一 为什么有了RDB持久化机制还要有AOF呢 板书介绍具体原因: ​编辑二 详细讲解AOF机制 (1)AOF的基本使用 1)板书如下 2)开启AOF机制: 3) AOF工作流程 (2)AOF是否会影响到redis性能 ​编辑 (3)AOF缓冲区刷新策略 (4)AOF的重写机制 板书如下: 为什么要有这个重写机…

前端防御性编程

关于防御性编程 你是否遇到过&#xff0c;接口请求失败或者返回数据错误&#xff0c;导致系统白屏或者前端自身写的代码存在一些缺陷&#xff0c;导致整个系统不够健壮&#xff0c;从而导致系统白屏 常见的问题与防范 最常见的问题 访问了null或者undefined的属性 null.a …

[数据结构]排序 --2

目录 8、快速排序 8.1、Hoare版 8.2、挖坑法 8.3、前后指针法 9、快速排序优化 9.1、三数取中法 9.2、采用插入排序 10、快速排序非递归 11、归并排序 12、归并排序非递归 13、排序类算法总结 14、计数排序 15、其他排序 15.1、基数排序 15.2、桶排序 8、快速排…

虎跃办公AI:重构智能办公的「模型交响乐团」

虎跃办公AI&#xff1a;重构智能办公的「模型交响乐团」 ——当全球40大模型在办公场景中奏响协奏曲 在某科创园区的会议室里&#xff0c;市场总监李薇正用AI生成产品发布会方案&#xff0c;设计团队同步调校着AI渲染的3D主视觉&#xff0c;法务AI自动扫描着合同风险条款——这…

JdbcTemplate基本使用

JdbcTemplate概述 它是spring框架中提供的一个对象&#xff0c;是对原始繁琐的JdbcAPI对象的简单封装。spring框架为我们提供了很多的操作模板类。例如:操作关系型数据的JdbcTemplate和MbernateTemplate&#xff0c;操作nosql数据库的RedisTemplate&#xff0c;操作消息队列的…

vue+leaflet 区域划分_反向遮罩层

leaflet 区域划分_遮罩层 geojson在线生成器网址:(https://datav.aliyun.com/portal/school/atlas/area_selector) 点击前往阿里云geojson生成器 效果图: 实现下面效果,只需要把addSateLayer函数的调用取消掉就好了. //添加遮罩层代码function addMask() {var latlngs;var fe…

ESP32开发之ubuntu环境搭建

1. 在Ubuntu官网下载Ubuntu server 20.04版本https://releases.ubuntu.com/20.04.6/ 2. 在vmware下安装Ubuntu 3. 改Ubuntu静态IP $ sudo vi /etc/netplan/00-installer-config.yaml# This is the network config written by ‘subiquity’ network: renderer: networkd eth…