第十六屆藍橋杯大賽軟件賽省賽 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.pswp.cn/news/901852.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/901852.shtml
英文地址,請注明出處:http://en.pswp.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…