第二届全国高校计算机技能竞赛——C++赛道 题解
Powered by:NEFU AB-IN
Link
文章目录
- 第二届全国高校计算机技能竞赛——C++赛道
- A 互不侵犯
- 题意
- 思路
- 代码
- B 奖学金
- 题意
- 思路
- 代码
- C 领导者
- 题意
- 思路
- 代码
- D 空调
- 题意
- 思路
- 代码
- E 字符操作变换
- 题意
- 思路
- 代码
第二届全国高校计算机技能竞赛——C++赛道
-
A 互不侵犯
-
题意
在象棋中,车可以攻击和他同一行同一列的棋子。
现在有一个放置了若干个车的 n × n n\times n n×n的棋盘,请问这个棋盘中车此时能相互攻击吗?能输出"YES",不能输出"NO"。
棋盘中只有车,有车的位置用 1 1 1表示,没有车用 0 0 0表示。 -
思路
模拟,一开始理解错题意了,其实是能挨着就行
-
代码
/* * @Author: NEFU AB-IN * @Date: 2023-09-28 19:01:05 * @FilePath: \Contest\a\a.cpp * @LastEditTime: 2023-10-05 18:14:53 */ #include <bits/stdc++.h> using namespace std; #define int long long #undef int#define SZ(X) ((int)(X).size()) #define ALL(X) (X).begin(), (X).end() #define IOS \ios::sync_with_stdio(false); \cin.tie(nullptr); \cout.tie(nullptr) #define DEBUG(X) cout << #X << ": " << X << '\n' typedef pair<int, int> PII;const int N = 1e3 + 10, INF = 0x3f3f3f3f;signed main() {// freopen("Tests/input_1.txt", "r", stdin);IOS;int n;cin >> n;vector<vector<int>> chessboard(n, vector<int>(n));for (int i = 0; i < n; ++i){for (int j = 0; j < n; ++j){cin >> chessboard[i][j];}}for (int i = 0; i < n; ++i){for (int j = 0; j < n; ++j){if (chessboard[i][j] == 1){for (int k = 0; k < n; ++k){if (chessboard[i][k] == 1 && k != j){cout << "YES" << '\n';return 0;}if (chessboard[k][j] == 1 && k != i){cout << "YES" << '\n';return 0;}}}}}cout << "NO" << '\n';return 0; }
-
-
B 奖学金
-
题意
某小学最近得到了一笔赞助,打算拿出其中一部分为学习成绩优秀的前5名学生发奖学金。期末,每个学生都有3门课的成绩:语文、数学、英语。先按总分从高到低排序,如果两个同学总分相同,再按语文成绩从高到低排序,如果两个同学总分和语文成绩都相同,那么规定学号小的同学排在前面,这样,每个学生的排序是唯一确定的。
任务:先根据输入的3门课的成绩计算总分,然后按上述规则排序,最后按排名顺序输出前五名名学生的学号和总分。注意,在前5名同学中,每个人的奖学金都不相同,因此,你必须严格按上述规则排序。例如,在某个正确答案中,如果前两行的输出数据(每行输出两个数:学号、总分) 是:
7 279
5 279
这两行数据的含义是:总分最高的两个同学的学号依次是7号、5号。这两名同学的总分都是 279 (总分等于输入的语文、数学、英语三科成绩之和) ,但学号为7的学生语文成绩更高一些。如果你的前两名的输出数据是:
5 279
7 279
则按输出错误处理,不能得分。 -
思路
结构体排序
-
代码
/* * @Author: NEFU AB-IN * @Date: 2023-09-28 19:10:53 * @FilePath: \Contest\b\b.cpp * @LastEditTime: 2023-09-28 19:14:35 */ #include <bits/stdc++.h> using namespace std; #define int long long #undef int#define SZ(X) ((int)(X).size()) #define ALL(X) (X).begin(), (X).end() #define IOS \ios::sync_with_stdio(false); \cin.tie(nullptr); \cout.tie(nullptr) #define DEBUG(X) cout << #X << ": " << X << '\n' typedef pair<int, int> PII;const int N = 1e5 + 10, INF = 0x3f3f3f3f;struct sa {int xh, y, s, yy; };sa a[N];signed main() {// freopen("Tests/input_1.txt", "r", stdin);IOS;int n;cin >> n;for (int i = 1; i <= n; ++i){cin >> a[i].y >> a[i].s >> a[i].yy;a[i].xh = i;}sort(a + 1, a + 1 + n, [&](const sa a, const sa b) {if (a.s + a.y + a.yy != b.s + b.y + b.yy){return a.s + a.y + a.yy > b.s + b.y + b.yy;}else if (a.y != b.y){return a.y > b.y;}else if (a.xh != b.xh){return a.xh < b.xh;};});for (int i = 1; i <= 5; ++i){cout << a[i].xh << " " << a[i].s + a[i].y + a[i].yy << '\n';}return 0; }
-
-
C 领导者
-
题意
小理有 N N N 头奶牛,每一头奶牛的品种是根西岛 G 或荷斯坦 H 中的一种。
每一头奶牛都有一个名单,第 i i i 头奶牛的名单上记录了从第 i i i 头奶牛到第 E i E_i Ei 头奶牛的所有奶牛。
每一种奶牛都有且仅有一位“领导者”,对于某一头牛 i i i,如果它能成为“领导者”仅当它满足以下条件的至少一个:
其记录的名单上包含它的品种的所有奶牛。
其记录的名单上记录了另一品种奶牛的“领导者”。
请求出有多少对奶牛可能成为两种奶牛的领导者,保证存在至少一种。 -
思路
差分解决,快速进行区间统计奶牛的种类
两种方式找到领导者,先是找到第一种,然后通过找到的领导者,找第二种领导者 -
代码
/* * @Author: NEFU AB-IN * @Date: 2023-09-30 11:07:47 * @FilePath: \Contest\c\c.cpp * @LastEditTime: 2023-09-30 11:40:32 */#include <bits/stdc++.h> using namespace std; #define int long long #undef int#define SZ(X) ((int)(X).size()) #define ALL(X) (X).begin(), (X).end() #define IOS \ios::sync_with_stdio(false); \cin.tie(nullptr); \cout.tie(nullptr) #define DEBUG(X) cout << #X << ": " << X << '\n' typedef pair<int, int> PII;const int N = 1e5 + 10, INF = 0x3f3f3f3f;char input[N]; int c[N], s1[N], s2[N], g[N], h[N], gs[N], hs[N];int main() {int n;cin >> n;cin >> (input + 1);for (int i = 1; i <= n; i++)cin >> c[i];for (int i = 1; i <= n; i++){s1[i] = s1[i - 1];s2[i] = s2[i - 1];if (input[i] == 'G')s1[i]++;elses2[i]++;}for (int i = 1; i <= n; i++){int gg = s1[c[i]] - s1[i - 1];int hh = s2[c[i]] - s2[i - 1];if (input[i] == 'G' && gg == s1[n])g[i] = 1;else if (input[i] == 'H' && hh == s2[n])h[i] = 1;}for (int i = 1; i <= n; i++){gs[i] = gs[i - 1], hs[i] = hs[i - 1];if (g[i])gs[i]++;if (h[i])hs[i]++;}for (int i = 1; i <= n; i++){if (input[i] == 'G' && (hs[c[i]] - hs[i - 1]) != 0)g[i] = 1;else if (input[i] == 'H' && (gs[c[i]] - gs[i - 1]) != 0)h[i] = 1;}int countG = 0, countH = 0;for (int i = 1; i <= n; i++){if (g[i])countG++;if (h[i])countH++;}cout << countG * countH << '\n';return 0; }
-
-
D 空调
-
题意
小理的 N N N 头奶牛住在一个谷仓里,谷仓里有连续的牛栏,编号为 1 − 100 1-100 1−100 。 奶牛 i i i 占据了编号 [ s i , t i ] [s_i,t_i] [si,ti] 的牛栏。 不同奶牛占据的牛栏范围是互不相交的。 奶牛有不同的冷却要求,奶牛 i i i 占用的每个牛栏的温度必须至少降低 c i c_i ci 单位。
谷仓包含 M M M 台空调,标记为 1 − M 1-M 1−M。第 i i i 台空调需要花费 m i m_i mi 单位的金钱来运行,如果运行,第 i i i 台空调将牛栏 [ a i , b i ] [a_i,b_i] [ai,bi] 所有牛栏的温度降低 p i p_i pi。 空调覆盖的牛栏范围可能会重叠。
请帮助小理求出满足所有奶牛需求要花费的最少金钱。 -
思路
由于数据量比较小,可以采用dfs,把所有空调的情况都枚举一遍
-
代码
/* * @Author: NEFU AB-IN * @Date: 2023-09-30 11:07:47 * @FilePath: \Contest\c\c.cpp * @LastEditTime: 2023-09-30 11:40:32 */#include <bits/stdc++.h> using namespace std; #define int long long #undef int#define SZ(X) ((int)(X).size()) #define ALL(X) (X).begin(), (X).end() #define IOS \ios::sync_with_stdio(false); \cin.tie(nullptr); \cout.tie(nullptr) #define DEBUG(X) cout << #X << ": " << X << '\n' typedef pair<int, int> PII;const int N = 1e5 + 10, INF = 0x3f3f3f3f;char input[N]; int c[N], s1[N], s2[N], g[N], h[N], gs[N], hs[N];int main() {int n;cin >> n;cin >> (input + 1);for (int i = 1; i <= n; i++)cin >> c[i];for (int i = 1; i <= n; i++){s1[i] = s1[i - 1];s2[i] = s2[i - 1];if (input[i] == 'G')s1[i]++;elses2[i]++;}for (int i = 1; i <= n; i++){int gg = s1[c[i]] - s1[i - 1];int hh = s2[c[i]] - s2[i - 1];if (input[i] == 'G' && gg == s1[n])g[i] = 1;else if (input[i] == 'H' && hh == s2[n])h[i] = 1;}for (int i = 1; i <= n; i++){gs[i] = gs[i - 1], hs[i] = hs[i - 1];if (g[i])gs[i]++;if (h[i])hs[i]++;}for (int i = 1; i <= n; i++){if (input[i] == 'G' && (hs[c[i]] - hs[i - 1]) != 0)g[i] = 1;else if (input[i] == 'H' && (gs[c[i]] - gs[i - 1]) != 0)h[i] = 1;}int countG = 0, countH = 0;for (int i = 1; i <= n; i++){if (g[i])countG++;if (h[i])countH++;}cout << countG * countH << '\n';return 0; }
-
-
E 字符操作变换
-
题意
小理给了小赛 Q Q Q 个新字符串 ( 1 ≤ Q ≤ 100 ) (1\le Q\le100) (1≤Q≤100) ,其中只有字符 M 和 O ,他想将 Q Q Q 个字符串都变成 MOO。
小赛可以用如下的方式改变字符串:
用相反的字符替换第一个或最后一个字符(将 M 变成 O ,将 O 变成 M )。
删除第一个或最后一个字符。
小赛只想用最少的次数完成改变。请你帮他找到需要的最小改变次数。如果不可能在有限的步数中完成这个任务,请输出 -1 。 -
思路
一共四种情况,其中两种情况是可以合并的,既然只能对头尾操作,那么就不用操心中间的情况,那就可以看连起来的某一段字符串的OM情况
-
代码
/* * @Author: NEFU AB-IN * @Date: 2023-09-28 19:50:53 * @FilePath: \Contest\e\e.cpp * @LastEditTime: 2023-09-28 19:55:37 */ #include <bits/stdc++.h> using namespace std; #define int long long #undef int#define SZ(X) ((int)(X).size()) #define ALL(X) (X).begin(), (X).end() #define IOS \ios::sync_with_stdio(false); \cin.tie(nullptr); \cout.tie(nullptr) #define DEBUG(X) cout << #X << ": " << X << '\n' typedef pair<int, int> PII;const int N = 1e5 + 10, INF = 0x3f3f3f3f;signed main() {// freopen("Tests/input_1.txt", "r", stdin);IOS;int q;cin >> q;while (q--){string a;cin >> a;int z = SZ(a), s = INF;for (int i = 0; i < z - 2; i++){if (a[i] == 'M' && a[i + 1] == 'O' && a[i + 2] == 'O'){s = z - 3;break;}else if ((a[i] == 'O' && a[i + 1] == 'O' && a[i + 2] == 'O') ||(a[i] == 'M' && a[i + 1] == 'O' && a[i + 2] == 'M')){s = min(s, z - 2);}else if (a[i] == 'O' && a[i + 1] == 'O' && a[i + 2] == 'M'){s = min(s, z - 1);}}if (s == INF)cout << "-1\n";elsecout << s << '\n';}return 0; }
-
相关文章:
第二届全国高校计算机技能竞赛——C++赛道 题解
Powered by:NEFU AB-IN Link 文章目录 第二届全国高校计算机技能竞赛——C赛道A 互不侵犯题意思路代码 B 奖学金题意思路代码 C 领导者题意思路代码 D 空调题意思路代码 E 字符操作变换题意思路代码 第二届全国高校计算机技能竞赛——C赛道 A 互不侵犯 题意 在象棋中ÿ…...
八大排序源码(含优化)
文章目录 1、直接插入排序2、希尔排序3、选择排序4、冒泡排序5、堆排序6、快速排序快速排序递归实现霍尔法挖坑法前后指针法快速排序小区间优化 快速排序非递归实现 7、归并排序归并排序递归实现归并排序非递归 8、计数排序 大家好,我是纪宁,这篇文章是关…...
单调队列---数据结构与算法
简介 队列也是一种受限制的线性表和栈相类似,栈是先进后出,而队列是先进先出,就好像一没有底的桶,往里面放东西,如图 在这里也是用数组来实现队列,用数组实现的叫做顺序队列 队列的数组模拟 const int N…...
小程序如何使用自定义组件
使用自定义组件的步骤如下: 创建自定义组件:在小程序项目根目录下的 components 文件夹中创建一个文件夹,然后在该文件夹中创建一个 .json 文件、一个 .wxml 文件和一个 .js 文件,这三个文件分别对应组件的配置、模板和逻辑。 在…...
归并排序含非递归版
目录 1.归并排序的原理 2.实现归并排序 2.1框架 2.2区间问题和后序遍历 2.3归并并拷贝 2.4归并排序代码 2.5测试 3.非递归实现归并排序 3.1初次实现 3.2测试 3.3修改 3.4修改测试 1.归并排序的原理 归并排序是建立在归并操作上的一种有效的排序算法,该算法是采用分治…...
项目进展(八)-编写代码,驱动ADS1285
一、代码 根据芯片的数据手册编写部分驱动,首先看部分引脚的波形: DRDY: CS: 首先在代码初始化时连续写入三个寄存器: void WriteReg(uint8_t startAddr, uint8_t *regData, uint8_t number) {uint8_t i0;// 循环写number1次…...
【MyBatis-Plus】快速精通Mybatis-plus框架—快速入门
大家在日常开发中应该能发现,单表的CRUD功能代码重复度很高,也没有什么难度。而这部分代码量往往比较大,开发起来比较费时。 因此,目前企业中都会使用一些组件来简化或省略单表的CRUD开发工作。目前在国内使用较多的一个组件就是…...
docker 安装kafka
运行容器 zookeeper: [rootk8s-master ~]# docker run -d --restartalways --log-driver json-file --log-opt max-size100m --log-opt max-file2 --name zookeeper -p 2181:2181 -v /etc/localtime:/etc/localtime zookeeper c603f292813cfd6e2b16fff88a9767cc86fc9bba34d82…...
容器内获得apiserver地址
1.容器的Env的KUBENETES_SERVICE_HOST字段 roottomcat01-69fc8f859b-w9btn:/tmp# env | grep KUBERNETES_SERVICE_HOST10.96.0.1 KUBERNETES_SERVICE_HOST10.96.0.12.通过域名查询 nslookup getent hosts roottomcat01-69fc8f859b-w9btn:/tmp# getent hosts kubernetes.def…...
linux服务端c++开发工具介绍(vscode版)
本文适合于有一定c开发经验,但是还不明确如何到linux服务端开发程序的同学。 一、vscode 几年前用的是ssh到云服务上,再用vim在云上开发的形式 ssh dongbeijing.dbj11.158.142.176 vim hello.c 现今,由于vscode比较好用,这几年…...
Linux常用命令大全
Linux常用命令大全 一、文件&目录管理1. 文件和目录操作命令2. 查看文件及内容处理命令3. 文件压缩及解压缩命令4. 搜索文件命令5. 其他 二、Linux 软件包管理三、用户管理1. 用户管理2. 查看系统用户登陆信息的命令 四、进程管理五、网络通信1. 基础网络操作命令2. 深入网…...
Python中取2023, 9, 1——2023, 10, 31的全部时间
使用datetime.date()函数定义了开始和结束日期。然后,我们使用datetime.timedelta()类创建了一个时间范围,其中n表示从开始日期到结束日期之间的天数。最后,我们使用一个for循环迭代时间范围内的日期,并打印每个日期。示例代码演示…...
创建django文件
1、在指定目录里打开终端,输入D:\Softwares\Anaconda3\envs\pytorch\Scripts\django-admin .exe startproject 名称 ,即可在对应目录里创建django文件。...
全排列[中等]
优质博文:IT-BLOG-CN 一、题目 给定一个不含重复数字的数组nums,返回其所有可能的全排列。你可以按任意顺序返回答案。 示例 1: 输入:nums [1,2,3] 输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]] 示例…...
mybatise-plus的id过长问题
一、问题情景 笔者在做mp插入数据库(id已设置为自增)操作时,发现新增数据的id过长,结果导致前端JS拿到的数据出现了精度丢失问题,原因是后端id的类型是Long。在网上查了一下,只要在该属性上加上如下注解就可以 TableId(value &q…...
图示矩阵分解
特征值与特征向量 设 A A A 是 n 阶矩阵,如果存在数 λ \lambda λ 和 n 维非零列向量 x x x,满足关系式: A x λ x ( 1 ) Ax \lambda x\quad\quad(1) Axλx(1) 则数 λ \lambda λ 称为矩阵 A A A 的特征值,非零向量 x…...
六、互联网技术——数据存储
文章目录 一、存储系统层次结构二、按照重要性分类三、磁盘阵列RAID三、RAID基础四、磁盘阵列分级五、数据备份与恢复六、容灾与灾难恢复 一、存储系统层次结构 常见的三层存储体系结构如下图所示,分为高速缓冲存储器、主存储器和外存储器。 二、按照重要性分类 …...
六、vpp 流表+负载均衡
草稿!!! vpp node其实就是三个部分 1、plugin init 2、set command 3、function 实现功能,比如这里的流表 今天我们再用VPP实现一个流表的功能 一、流表 1.1流表----plugin init VLIB_REGISTER_NODE 注册流表节点 // 注册流…...
word已排序好的参考文献,插入新的参考文献,序号更新
原排序好的文献序号。 现在在3号后面插入一个新文献。4,5号应该成为5,6 这时在3号后面,回车,就会自动的增长。如下图: 但是如果手滑,把[4]删除了如何排序?? 如下图: …...
二叉树的顺序存储——堆——初识堆排序
前面我们学过可以把完全二叉树存入到顺序表中,然后利用完全二叉树的情缘关系,就可以通过数组下标来联系。 但是并不是把二叉树存入到数组中就是堆了,要看原原来的二叉树是否满足:所有的父都小于等于子,或者所有的父都…...
终极大脑训练指南:5个简单步骤用BrainWorkshop提升你的认知能力
终极大脑训练指南:5个简单步骤用BrainWorkshop提升你的认知能力 【免费下载链接】brainworkshop Continued development of the popular brainworkshop game 项目地址: https://gitcode.com/gh_mirrors/br/brainworkshop BrainWorkshop是一款专业的免费开源大…...
TinyTroupe:轻量级智能体协作范式与确定性AI工程实践
1. 项目概述:这不是另一个“小模型”,而是一套轻量级智能体协作范式你可能已经看过不少标题带“Tiny”“Mini”“Lite”的AI项目,它们大多是在说“把大模型压缩一下,跑在手机上”。但 Microsoft 的TinyTroupe完全不是这个路数——…...
基于LLM与RAG的法律AI工具:从架构解析到工程实践
1. 项目概述:一个法律文本智能生成与分析的AI工具最近在和一些做法律科技的朋友聊天时,他们反复提到一个痛点:处理海量的、格式固定的法律文书,比如起诉状、合同、律师函,既耗时又容易在细节上出错。人工起草一份严谨的…...
Hermit:项目级环境隔离工具,告别开发环境冲突
1. 项目概述:从“隐士”到现代开发者的效率革命如果你和我一样,常年与终端为伴,每天在多个项目、不同编程语言和工具链之间切换,那你一定对那种“环境错乱”的痛楚深有体会。前一秒还在用 Python 3.11 调试一个数据脚本࿰…...
青年教师评副高‘捷径’:这6本被低估的SSCI,认可度不输顶刊!
01 Academic Medicine期刊分区影响因子自引率年文章数教育学1区5.211.5%252篇投稿参考:美国医学院协会(AAMC)官方期刊,审稿周期 2–3 个月,录用率≈20%;可选非 OA 模式免版面费,适合具有实践转…...
NAND闪存市场演进:从消费电子到AI时代的技术博弈与产业洞察
1. 从一篇旧闻说起:NAND闪存市场的“过山车”与底层逻辑最近在整理资料时,翻到一篇2012年的行业旧闻,标题是《平板电脑需求推动NAND闪存增长》。文章的核心观点很明确:以智能手机、平板电脑(当时还是iPad和安卓平板争锋…...
从恒流源到差动放大:铂电阻测温电路的优化路径与实践
1. 铂电阻测温基础与设计挑战 铂电阻作为工业测温的中坚力量,其核心优势在于稳定的物理特性。PT100在0℃时标称电阻为100Ω,温度系数为0.385Ω/℃。这个看似简单的参数背后,却隐藏着电路设计的三大矛盾:灵敏度与噪声的博弈、线性度…...
STM32F4 SPI DMA实战:用CubeMX和HAL库5分钟搞定高速数据传输(附避坑指南)
STM32F4 SPI DMA实战:CubeMXHAL库5分钟极速配置指南 在嵌入式开发中,SPIDMA的组合堪称数据传输的"黄金搭档"——既能享受SPI接口的高速特性,又能通过DMA解放CPU资源。但传统基于寄存器的手动配置方式,往往让开发者陷入繁…...
7个DevPod自动化脚本技巧:批量操作工作空间的终极指南
7个DevPod自动化脚本技巧:批量操作工作空间的终极指南 【免费下载链接】devpod Codespaces but open-source, client-only and unopinionated: Works with any IDE and lets you use any cloud, kubernetes or just localhost docker. 项目地址: https://gitcode.…...
LaTeX引用中文文献总出乱码?可能是你BibTeX引擎和编码没选对(XeLaTeX+BibTeX实战)
LaTeX中文文献引用乱码全解析:从编码原理到XeLaTeX实战方案 当你熬夜赶论文时,参考文献列表突然变成一堆乱码方块,引用标记全部显示为"??"——这种崩溃瞬间,每个用LaTeX写过中文论文的人都经历过。传统解决方案往往停…...
