当前位置: 首页 > article >正文

第十六届蓝桥杯大赛软件赛省赛 C++ 大学 B 组 部分题解

赛时参加的是Python组,这是赛后写的题解,还有两题暂时还不会,待更新

题目链接题目列表 - 洛谷 | 计算机科学教育新生态

A 移动距离

答案:1576

C  可分解的正整数

Python3
 

import itertools
from functools import cmp_to_keyimport sysinput = sys.stdin.readline
sys.set_int_max_str_digits(100000)def I():return input().strip()def II():return int(I())def MII():return map(int, I().split())def LMII():return list(MII())def solve():n = II()data = LMII()res = 0for x in data:if x != 1:res += 1print(res)T = 1
for _ in range(T):solve()

C++

#include"iostream"
using namespace std;int main() {int n = 0, x, res = 0;cin >> n;for (int i = 0;i < n;i++) {cin >> x;if (x != 1)res++;}cout << res;
}

D 产值调整

Python3

import itertools
from functools import cmp_to_keyimport sysinput = sys.stdin.readline
sys.set_int_max_str_digits(100000)def I():return input().strip()def II():return int(I())def MII():return map(int, I().split())def LMII():return list(MII())def solve():t = II()for i in range(t):a, b, c, k = MII()for j in range(k):if a == b == c:breaka, b, c = (b + c) // 2, (a + c) // 2, (a + b) // 2print(a, b, c)T = 1
for _ in range(T):solve()

C++

#include"iostream"
using namespace std;int main() {int t;cin >> t;for (int i = 0;i < t;i++) {int a, b, c, k;cin >> a >> b >> c >> k;for (int j = 0;j < k;j++) {if (a == b && b == c)break;int aa = (b + c) / 2;int bb = (a + c) / 2;int cc = (a + b) / 2;a = aa;b = bb;c = cc;}cout << a << " " << b << " " << c << endl;}
}

E 画展布置

Python3

import itertools
from functools import cmp_to_keyimport sysinput = sys.stdin.readline
sys.set_int_max_str_digits(100000)def I():return input().strip()def II():return int(I())def MII():return map(int, I().split())def LMII():return list(MII())def solve():n, m = MII()data = LMII()data.sort()tmp = [0] * (n - 1)for i in range(n - 1):tmp[i] = data[i + 1] ** 2 - data[i] ** 2res = 0for i in range(m - 1):res += tmp[i]idx = 0now = resfor i in range(m - 1, n - 1):now = now + tmp[i] - tmp[idx]res = min(res, now)idx += 1print(res)T = 1
for _ in range(T):solve()

C++

#include"iostream"
#include"math.h"
#include"algorithm"
#include"vector"
using namespace std;int main() {int n, m;cin >> n >> m;vector<int> data;for (int i = 0;i < n;i++) {int x;cin >> x;data.push_back(x);}sort(data.begin(), data.end());int tmp[100005] = { 0 };for (int i = 0;i < n - 1;i++)tmp[i] = pow(data[i + 1], 2) - pow(data[i], 2);long long res = 0;for (int i = 0;i < m - 1;i++)res += tmp[i];int idx = 0;long long now = res;for (int i = m - 1;i < n - 1;i++) {now = now + tmp[i] - tmp[idx];res = min(res, now);idx++;}cout << res << endl;
}

F 水质检测

Python3

import itertools
from functools import cmp_to_keyimport sysinput = sys.stdin.readline
sys.set_int_max_str_digits(100000)def I():return input().strip()def II():return int(I())def MII():return map(int, I().split())def LMII():return list(MII())def solve():s1 = I()s2 = I()st = -1en = 0for i in range(len(s1)):if s1[i] == "#" or s2[i] == "#":if st == -1:st = ielse:en = i# print(st, en)if st == -1 or en == 0:print(0)else:res = 0tmp = 0for i in range(st, en + 1):# print(tmp,s1[i],s2[i])if s1[i] == s2[i] == '.':res += 1elif s1[i] == '.':if tmp == 1:res += 1tmp = 0else:tmp = 2elif s2[i] == ".":if tmp == 2:res += 1tmp = 0else:tmp = 1else:tmp = 0# print(i, res)print(res)T = 1
for _ in range(T):solve()

C++

#include"iostream"
#include"math.h"
#include"algorithm"
#include"vector"
#include"string"
using namespace std;int main() {string s1;string s2;cin >> s1;cin >> s2;int st = -1;int en = 0;for (int i = 0;i < s1.size();i++) {if (s1[i] == '#' || s2[i] == '#') {if (st == -1)st = i;else en = i;}}if (st == -1 || en == 0)cout << 0;else {int res = 0;int tmp = 0;for (int i = st;i < en + 1;i++) {if (s1[i] == '.' && s2[i] == '.') {res++;}else if (s1[i] == '.') {if (tmp == 1) {res++;tmp = 0;}else tmp = 2;}else if (s2[i] == '.') {if (tmp == 2) {res++;tmp = 0;}else tmp = 1;}else tmp = 0;}cout << res;}
}

G 生产车间

Python3

import itertools
from functools import cmp_to_keyimport sysinput = sys.stdin.readline
sys.set_int_max_str_digits(100000)def I():return input().strip()def II():return int(I())def MII():return map(int, I().split())def LMII():return list(MII())def solve():n = II()data = LMII()dic = {}for i in range(n - 1):u, v = MII()dic[u] = dic.get(u, []) + [v]dic[v] = dic.get(v, []) + [u]visited = [0] * (n + 1)lst = [[1]]now_visit = [1]visited[1] = 1father = {}son = {}while now_visit:next_visit = []for x in now_visit:for xx in dic[x]:if not visited[xx]:father[xx] = xson[x] = son.get(x, []) + [xx]next_visit.append(xx)visited[xx] = 1if next_visit:lst.append(next_visit)now_visit = next_visitlst.reverse()res = [set() for _ in range(n)]for i in range(1, n + 1):if i not in son:res[i - 1].add(data[i - 1])# print(res)# print(lst)# print(father)# print(son)def fun(lst, x):"""lst: 一个列表,列表中每个元素都是一个可迭代的集合(或列表),表示“这一组”可供选择的数字。x: 目标上界(小于等于 x)返回: 一个集合 ans,包含所有可能的选数总和(<= x)。"""# 初始只能选空集,总和为 0ans = {0}# 对每一组可选数字,更新所有可能的总和for group in lst:new_ans = set(ans)  # 保留“都不选任何数”的那部分for s in ans:  # 对已有的每一种“已选总和”for num in group:tot = s + numif tot <= x:new_ans.add(tot)ans = new_ansans.remove(0)return anshandle = [0] * (n + 1)for x in lst[:-1]:for xx in x:if not handle[xx]:tmp = father[xx]need_handle = []for y in son[tmp]:handle[y] = 1need_handle.append(res[y - 1])# print(need_handle)res[tmp - 1] |= fun(need_handle, data[tmp - 1])# print(tmp, res[tmp - 1])if not res[0]:print(0)else:print(max(res[0]))T = 1
for _ in range(T):solve()

C++

#include"iostream"
#include"math.h"
#include"algorithm"
#include"vector"
#include"string"
#include"unordered_map"
#include"unordered_set"
#include"set"
using namespace std;unordered_set<int> fun(const vector<unordered_set<int>>& lst, int x) {unordered_set<int> ans = { 0 };for (const auto& group : lst) {unordered_set<int> new_ans;for (int s : ans) {new_ans.insert(s);  // 记得保留原来的情况(不选当前组)for (int num : group) {int tot = s + num;if (tot <= x) new_ans.insert(tot);}}ans = std::move(new_ans);}ans.erase(0);return ans;
}int main() {int n;cin >> n;vector<int> data;for (int i = 0;i < n;i++) {int x;cin >> x;data.push_back(x);}unordered_map<int, vector<int>> m;for (int i = 0;i < n - 1;i++) {int u, v;cin >> u >> v;m[u].push_back(v);m[v].push_back(u);}vector<int> visited(n + 1, 0);vector<vector<int>> lst = { {1} };vector<int> now_visit = { 1 };visited[1] = 1;unordered_map<int, int> father;unordered_map<int, vector<int>> son;while (!now_visit.empty()) {vector<int> next_visit;for (auto x : now_visit) {for (auto xx : m[x]) {if (!visited[xx]) {father[xx] = x;son[x].push_back(xx);next_visit.push_back(xx);visited[xx] = 1;}}}if (!next_visit.empty()) {lst.push_back(next_visit);}now_visit = next_visit;}reverse(lst.begin(), lst.end());vector<unordered_set<int>> res(n);for (int i = 1;i < n + 1;i++) {if (son.find(i) == son.end()) {res[i - 1].insert(data[i - 1]);}}vector<int> handle(n + 1, 0);for (int i = 0; i < (int)lst.size() - 1; i++) {for (auto x : lst[i]) {if (!handle[x]) {int tmp = father[x];vector<unordered_set<int>> need_handle;for (auto y : son[tmp]) {handle[y] = 1;need_handle.push_back(res[y - 1]);}unordered_set<int> merged = fun(need_handle, data[tmp - 1]);for (int val : merged) {res[tmp - 1].insert(val);}}}}if (res[0].empty()) {cout << 0 << endl;}else {int ans = 0;for (auto a : res[0]) {if (a > ans)ans = a;}cout << ans << endl;}
}

相关文章:

第十六届蓝桥杯大赛软件赛省赛 C++ 大学 B 组 部分题解

赛时参加的是Python组&#xff0c;这是赛后写的题解&#xff0c;还有两题暂时还不会&#xff0c;待更新 题目链接题目列表 - 洛谷 | 计算机科学教育新生态 A 移动距离 答案&#xff1a;1576 C 可分解的正整数 Python3 import itertools from functools import cmp_to_ke…...

考研数据结构之顺序查找、折半查找与分块查找详解(包含真题及解析)

考研数据结构之顺序查找、折半查找与分块查找详解 一、顺序查找&#xff08;Sequential Search&#xff09; 1.1 基本思想 顺序查找是最基础的查找算法&#xff0c;通过遍历数据集合逐个比较目标值与当前元素&#xff0c;直到找到匹配项或遍历结束。其核心特点是&#xff1a…...

英文查重的时候参考文献显示重复是怎么回事?

像上图这样参考文献部分有颜色的情况&#xff0c;是属于参考文献没有排除干净的问题。 如何解决这样的问题&#xff1f; 首先第一步&#xff0c;先确认该报告是不是排除参考文献的版本&#xff1b; 第二步&#xff0c;如果是排除参考文献的版本&#xff0c;且参考文献仍然有…...

八股文---MySQl(3)

目录 12.事务的特性是什么&#xff1f;可以详细说一下吗&#xff1f; 回答 13并发事务带来哪些问题&#xff1f;怎么解决这些问题呢&#xff1f;MySQL的默认隔离级别是&#xff1f; 脏读&#xff1a;一个事务读到另外一个事务还没有提交的数据。 不可重复读&#xff1a;一个…...

基于labview的钢琴程序设计

部分程序如下 按照上图子vi更改输出频率即可 若需完整程序可以联系我...

国内网络设备厂商名单(List of Domestic Network Equipment Manufacturers)

国内网络设备厂商名单 运维工程师必须广泛熟悉国内外各大厂商的设备&#xff0c;深入掌握其应用场景、功能特点及优势。这不仅有助于在故障排查时迅速定位问题&#xff0c;还能在系统设计、优化与升级中做出更合理的决策。对设备特性的精准把握&#xff0c;能够显著提升运维效…...

基于CNN+ViT的蔬果图像分类实验

本文只是做一个简单融合的实验&#xff0c;没有任何新颖&#xff0c;大家看看就行了。 1.数据集 本文所采用的数据集为Fruit-360 果蔬图像数据集&#xff0c;该数据集由 Horea Mureșan 等人整理并发布于 GitHub&#xff08;项目地址&#xff1a;Horea94/Fruit-Images-Datase…...

高级语言调用C接口(五)结构体(3)-arkts

上一篇文章提到了&#xff0c;arkts和C接口之前还有一个Napi层&#xff0c;这层代码最大的优势就是C/C编码&#xff0c;这样&#xff0c;我们只需要把数据通过Json格式传递到Napi层&#xff0c;Napi层再定义一个结构体并赋值即可。arkts层是TypeScript代码&#xff0c;想定义成…...

【虚幻C++笔记】接口

目录 概述创建接口 概述 简单的说&#xff0c;接口提供一组公共的方法&#xff0c;不同的对象中继承这些方法后可以有不同的具体实现。任何使用接口的类都必须实现这些接口。实现解耦解决多继承的问题 创建接口 // Fill out your copyright notice in the Description page o…...

【MCP】第一篇:MCP协议深度解析——大模型时代的“神经连接层“架构揭秘

【MCP】第一篇&#xff1a;MCP协议深度解析——大模型时代的"神经连接层"架构揭秘 一、什么是MCP&#xff1f;二、为什么需要MCP&#xff1f;三、MCP的架构四、MCP与AI交互的原理4.1 ReAct&#xff08;Reasoning Acting&#xff09;模式4.2 Function Calling 模式 五…...

实时模式下 libaom 与 x264 编码对比实验

前沿 理论基础&#xff1a;在相同视频质量下&#xff0c;AV1的压缩率比H.264高约30%-50%。实时模式&#xff1a;视频编码中的实时模式&#xff0c;其核心目标是平衡编码效率与延迟要求&#xff0c;尤其在视频会议、直播、实时通信等场景中至关重要。 低延迟要求&#xff1a;编…...

学习海康VisionMaster之矩形检测

这几天太忙了&#xff0c;好几天没有学习了&#xff0c;今天终于空下来了&#xff0c;继续学习之路吧。 一&#xff1a;进一步学习了 今天学习下VisionMaster中的矩形检测&#xff0c;这个一开始我以为是形态学方面的检测&#xff0c;实际操作下来其实还是边缘直线的衍生应用&…...

解决前端vue项目在linux上,npm install,node-sass 安装失败的问题

Unable to save binary /var/lib/jenkins/workspace/xxx/node_modules/node-sass/vendor/linux-x64-72 : Error: EACCES: permission denied, mkdir ‘/var/lib/jenkins/workspace/x/node_modules/node-sass/vendor’ 这个是node-sass安装失败导致的。 #将npm的默认仓库更改为…...

C Primer Plus 第6版 编程练习——第3章

1、通过试验&#xff08;即编写带有此类问题的程序&#xff09;观察系统如何处理整数上道、浮占数上溢和浮点数下溢的 int main(int argc, char** argv) {int intMax 2147483647;float floatMax 3.402823466e38f;float floatMin -3.402823466e38f;printf("intMax:%d, …...

十倍开发效率 - IDEA插件之 Mybatis Log Free

提高效率不是为了完成更多任务&#xff0c;而是为了有充足的时间摸鱼 快速体验 MyBatis Log Free 支持打印执行的 SQL&#xff08;完整的SQL&#xff0c;没有占位符的&#xff09;。 没有使用 MyBatis Log Free 的开启日志打印是这样的&#xff1a; 用了 MyBatis Log Free 后…...

手动安装 VMware Tools 并设置虚拟机共享 Windows 文件夹

前言&#xff1a;在当今数字化的工作环境中&#xff0c;虚拟机技术为我们提供了强大的灵活性和便利性。VMware 作为虚拟化领域的佼佼者&#xff0c;其虚拟机软件被广泛应用于开发、测试和日常工作中。然而&#xff0c;许多用户在使用 VMware 虚拟机时&#xff0c;会遇到一个常见…...

(免费)flask调用讯飞星火AI,实现websocket

本文章可借鉴学习&#xff0c;不可直接盗用 接入ai要获取ID&#xff0c;Secret&#xff0c;Key&#xff0c;和接口地址&#xff0c;由于我们服务接口类型是websocket&#xff0c;所以要获取相应的接口地址。&#xff08;千万不要复制粘贴到http的了&#xff09; 还要获取doma…...

ARINC818协议-持续

一、帧头帧尾 SOF 和 EOF 分别代表视频帧传输的开始与结束&#xff0c;它们在封装过程有多种状态&#xff0c;SOF 分为 SOFi 和 SOFn&#xff0c;EOF 分为 EOFt 和 EOFn。传输系统中的视频信息包括像素数据信 息和辅助数据信息&#xff0c;分别存储在有效数据中的对象 0 和对象…...

分布式笔记(一)

分布式系统问题 并发性 没有全局时钟 故障独立性 分布式系统概念 分布式优势 资源共享、开放性、并发性、可扩展性、容错性 问题挑战 分布式系统总部特性很难了解 分布式系统响应不可预知 不能自顶向下 设计原则 透明性 开放性&#xff1a;按照普遍标准 可扩展性…...

linux常用基础命令_最新版

echo off setlocal enabledelayedexpansion :: Copyright © 2025 xianwen.deng :: All rights reserved. :: 591278546qq.com :: Version: 1.0 for /f “tokens2 delims:” %%a in (‘chcp’) do set “codepage%%a” set codepage!codepage: ! echo Codepage: !codepag…...

2021-11-09 C++三位数平方含有该数

缘由求解&#xff0c;运算函数&#xff0c;哪位大神教一下-编程语言-CSDN问答 void 三位数平方含有该数() {//缘由https://ask.csdn.net/questions/7560152?spm1005.2025.3001.5141int a 100, aa 1000, f 0;while (a < aa){f a*a;while (f > a)if ((f - a) % aa)f …...

MATLAB 程序实现了一个层次化光网络的数据传输模拟系统

% 主程序 num_pods = 4; % Pod 数量 num_racks_per_pod = 4; % 每个 Pod 的 Rack 数量 num_nodes_per_rack = 4; % 每个 Rack 的 Node 数量 max_wavelength = 50; % 可用波长数(根据冲突图动态调整) num_packets = 1000; % 模拟的…...

解锁 MCP 协议:AI 与数据交互的新桥梁

在人工智能&#xff08;AI&#xff09;蓬勃发展的当下&#xff0c;大型语言模型&#xff08;LLM&#xff09;展现出了令人惊叹的生成与推理能力。然而&#xff0c;它们在数据访问方面却面临着严峻的 “数据孤岛” 挑战。传统模式下&#xff0c;每个数据源都需要专门的连接器&am…...

StarRocks Community Monthly Newsletter (Mar)

版本动态 3.4.1 版本更新 核心功能升级 数据安全与权限管控 支持「安全视图」功能&#xff0c;严格管控视图查询权限 MySQL协议连接支持SSL认证&#xff0c;保障数据传输安全 存算分离架构增强 支持自动创建Snapshot&#xff08;集群恢复更便捷&#xff09; Storage Volu…...

Github 2FA(Two-Factor Authentication/两因素认证)

Github 2FA认证 多因素用户认证(Multi-Factor Authentication)&#xff0c;基本上各个大互联网平台&#xff0c;尤其是云平台厂商&#xff08;如&#xff1a;阿里云的MFA、华为云、腾讯云/QQ安全中心等&#xff09;都有启用了&#xff0c;Github算是搞得比较晚些了。 双因素身…...

动态规划 -- 简单多状态dp,打家劫舍问题

1 按摩师 面试题 17.16. 按摩师 - 力扣&#xff08;LeetCode&#xff09; 本题的意思简单理解就是&#xff0c;如果我们接受了第 i 个预约&#xff0c;那么第 i -1 个预约和第 i1 个预约我们都是无法接受的&#xff0c;只能至少间隔一个选择。 按照以前的经验&#xff0c;我们…...

list的模拟实现和反向迭代器的底层

1&#xff1a;list的模拟实现 1&#xff1a;链表的节点 对于list的模拟实现&#xff0c;我们需要先定义一个节点的类可以使用&#xff08;class也可以使用struct&#xff09; // List的节点类 template<class T> struct ListNode {ListNode(const T& val T()){_p…...

C++学习之游戏服务器开发⑤AOI业务逻辑

目录 1.项目进度回顾 2.完善整体架构 3.AOI网格思路 4.网络AOI数据结构 5.游戏世界类添加&#xff0c;删除和构造 6.AOI查找实现 7.GAMEROLE类结合AOI 8.登陆时发送ID和姓名 9.登陆时发送周围玩家位置 10.玩家上线完成 11.玩家下线处理 1.项目进度回顾 时间轮调度处理…...

C/C++语言常见问题-智能指针、多态原理

文章目录 智能指针实现原理智能指针&#xff0c;里面的计数器何时会改变std::shared_ptr的引用计数器&#xff1a;std::weak_ptr的弱引用计数器&#xff1a;std::unique_ptr的控制块&#xff1a;总结&#xff1a; 智能指针和管理的对象分别在哪个区面向对象的特性&#xff1a;多…...

Python 实现日志备份守护进程

实训背景 假设你是一名运维工程师&#xff0c;需要为公司的监控系统开发一个简单的日志备份守护进程。该进程需满足以下需求&#xff1a; 后台运行&#xff1a;脱离终端&#xff0c;长期监控指定目录&#xff08;如 /var/log/app/&#xff09;中的日志文件。自动备份&#xf…...