第十六届蓝桥杯大赛软件赛省赛 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;}
}

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

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

相关文章

Vue 解决 Error: please transfer a valid prop path to form item!

在 Vue.js 中使用表单验证库&#xff08;如 VeeValidate 或 Element UI 的表单组件时&#xff09;&#xff0c;遇到错误信息 "please transfer a valid prop path to form item!" 通常指的是在表单项的属性绑定中&#xff0c;路径&#xff08;prop path&#xff09;不…

在 Visual Studio Code 中安装通义灵码 - 智能编码助手

高效的编码工具对于提升开发效率和代码质量至关重要。 通义灵码作为一款智能编码助手&#xff0c;为开发者提供了全方位的支持。 本文将详细介绍如何在 Visual Studio Code&#xff08;简称 VSCode&#xff09;中安装通义灵码&#xff0c;以及如何进行相关配置以开启智能编码…

SQL 解析 with as dual sysdate level

目录 sql的运行顺序 with as EXTRACT ​编辑 dual sysdate level ​编辑 ​编辑 Oracle中的日期存储 核心部分 拆解字符串并计算最小值 关联子查询 NVL 函数 REGEXP_SUBSTR() sql的运行顺序 <select id="getTrendList" parameterType="java.uti…

快手OneRec 重构推荐系统:从检索排序到生成统一的跃迁

文章目录 1. 背景2. 方法2.1 OneRec框架2.2 Preliminary2.3 生成会话列表2.4 利用奖励模型进行迭代偏好对齐2.4.1 训练奖励模型2.4.2 迭代偏好对齐 3. 总结 昨天面试的时候聊到了OneRec&#xff0c;但是由于上次看这篇文章已经是一个月之前&#xff0c;忘得差不多了&#xff0c…

软考高级系统架构设计师-第11章 系统架构设计

【本章学习建议】 根据考试大纲&#xff0c;本章不仅考查系统架构设计师单选题&#xff0c;预计考12分左右&#xff0c;而且案例分析和论文写作也是必考&#xff0c;对应第二版教材第7章&#xff0c;属于重点学习的章节。 软考高级系统架构设计师VIP课程https://edu.csdn.net/…

selenium之文件下载

Selenium 自动化测试&#xff1a;轻松搞定文件下载 在 Web 自动化测试中&#xff0c;经常会遇到需要验证文件下载功能的场景。例如&#xff0c;测试报告的导出、用户上传文件的下载、PDF 文档的生成与下载等等。Selenium 本身并没有直接处理文件下载的内置方法&#xff0c;但我…

基于迁移学习实现肺炎X光片诊断分类

大家好&#xff0c;我是带我去滑雪&#xff01; 肺炎是全球范围内致死率较高的疾病之一&#xff0c;尤其是在老年人、免疫系统较弱的患者群体中&#xff0c;更容易引发严重并发症。传统上&#xff0c;肺炎的诊断依赖于医生的临床经验以及影像学检查&#xff0c;尤其是X光片&…

工业数据治理范式革新:时序数据库 TDengine虚拟表技术解析

小T导读&#xff1a;在工业数字化过程中&#xff0c;数据如何从设备采集顺利“爬坡”到上层应用&#xff0c;一直是个难题。传统“单列模型”虽贴合设备协议&#xff0c;却让上层分析举步维艰。TDengine 用一种更聪明的方法打通了这条数据通路&#xff1a;不强求建模、不手动转…

Redis面试——日志

一、RDB&#xff08;Redis DataBase&#xff09; RDB 全程是 Redis DataBase&#xff0c;它是一种将 Redis 在某一时刻内存中的数据以快照形式保存到磁盘的机制 &#xff0c;相当于给执行save/bgsave命令时刻的内存数据库数据拍了一张快照我们如果通过save命令来执行快照&…

【Android】常用参数实践 用户界面UI 布局文件XML

本文将系统总结 Android XML 布局的通用参数和常用布局类型的专属规则 一、通用布局参数 这些参数适用于所有 View 和 ViewGroup&#xff0c;是布局设计的基石。 1. 尺寸控制 android:layout_width 与 android:layout_height 定义视图的宽度和高度&#xff0c;可选值&#xf…

解决 VSCode 中 NVM 配置后无法识别 Node 和 NPM 的问题

在开发中&#xff0c;我们经常需要使用 Node.js 和 NPM 来管理 JavaScript 项目依赖&#xff0c;而 NVM&#xff08;Node Version Manager&#xff09;是开发者在本地环境中管理多个 Node.js 版本的得力工具。不过&#xff0c;有时候在 VSCode 中配置完 NVM 后&#xff0c;可能…

BGP分解实验·23——BGP选路原则之路由器标识

在选路原则需要用到Router-ID做选路决策时&#xff0c;其对等体Router-ID较小的路由将被优选&#xff1b;其中&#xff0c;当路由被反射时&#xff0c;包含起源器ID属性时&#xff0c;该属性将代替router-id做比较。 实验拓扑如下&#xff1a; 实验通过调整路由器R1和R2的rout…

Linux: 线程同步

目录 一 前言 二 线程饥饿 三 线程同步 四 条件变量 1. cond &#xff08; condition&#xff09; 2. pthread_cond_wait() &#xff1a; 3. pthread_cond_signal() 五 条件变量的使用 一 前言 在上篇文章Linux : 多线程互斥-CSDN博客我们讲解了线程互斥的概念&#xff…

MyBatisPlus-QueryWrapper的exists方法拼接SQL中的EXISTS子句

在 MyBatis-Plus 中,QueryWrapper 的 exists 方法用于拼接 SQL 中的 EXISTS 子句,通常用于构 建子查询条件。以下是具体用法和示例: ​​1. 基本语法​​ // 判断是否存在符合条件的记录 queryWrapper.exists(String existsSql); queryWrapper.notExists(String existsSq…

[数据结构]哈希表

目录 1、哈希表 1.1、概念 1.2、冲突 2、哈希函数设计 3、负载因子调节 4、闭散列 5、开散列/哈希桶&#xff08;重点掌握&#xff09; 6、实现哈希桶 6.1、put方法 6.2、HashMap的扩容机制 6.3、get方法 7、HashMap 8、HashSet 8.1、哈希表性能分析 9、hashcod…

VS-Code创建Vue3项目

1 创建工程文件 创建一个做工程项目的文件夹 如&#xff1a;h5vue 2 cmd 进入文件 h5vue 3 输入如下命令 npm create vuelatest 也可以输入 npm create vitelatest 4 输入项目名称 项目名称&#xff1a;自已输入 回车 可以按键盘 a (全选) 回车&#xff1a; Playwright…

linux休眠唤醒流程

1、框架 2、休眠流程 应用层通过echo mem > /sys/power/state写入休眠状态&#xff0c;给一张大概流程图 这个操作对应在kernel/power/main.c的state这个attr的store操作 static ssize_t state_store(struct kobject *kobj, struct kobj_attribute *attr, …

Mysql--基础知识点--93--两阶段提交

1 两阶段提交 以update语句的具体执行过程为例&#xff1a; 具体更新一条记录 UPDATE t_user SET name ‘xiaolin’ WHERE id 1;的流程如下&#xff1a; 1.执行器负责具体执行&#xff0c;会调用存储引擎的接口&#xff0c;通过主键索引树搜索获取 id 1 这一行记录&#…

Windows 环境下 Apache 配置 WebSocket 支持

目录 前言1. 基本知识2. 实战前言 🤟 找工作,来万码优才:👉 #小程序://万码优才/r6rqmzDaXpYkJZF 爬虫神器,无代码爬取,就来:bright.cn 原先写过apache的http配置:Apache httpd-vhosts.conf 配置详解(附Demo) 1. 基本知识 🔁 WebSocket 是 HTTP 的升级协议 客户…

UMAEA论文阅读

Preliminaries MMKG为一个五元组G{E, R, A, V, T}&#xff0c;其中E、R、A和V分别表示实体集、关系集、属性集和图像集。 T⊆ERE是关系三元组集。 给定两个MMKG G1 {E1, R1, A1, V1, T1} 和 G2 {E2, R2, A2, V2, T2}&#xff0c; MMEA旨在识别每个实体对&#xff08;e1…