2024 睿抗机器人开发者大赛CAIP-编程技能赛-本科组(省赛补题3、4)

题4:RC-u4 章鱼图的判断    分数 25

题目:

对于无向图 G=(V,E),我们将有且只有一个环的、大于 2 个顶点的无向连通图称之为章鱼图,因为其形状像是一个环(身体)带着若干个树(触手),故得名。

给定一个无向图,请你判断是不是只有一个章鱼子图存在。

输入格式:
输入第一行是一个正整数 T (1≤T≤5),表示数据的组数。

每组数据的第一行是两个正整数 N,M (1≤N,M≤10 
5
 ),表示给定的无向图有 N 个点,M 条边。

接下来的 M 行,每行给出一条边两个端点的顶点编号。注意:顶点编号从 1 开始,并且题目保证任何边不会重复给出,且没有自环。

输出格式:
对于每组数据,如果给定的图里只有一个章鱼子图,则在一行中输出 Yes 和章鱼子图环的大小(及环中顶点数),其间以 1 个空格分隔。

否则,则在一行中输出 No 和图中章鱼子图的个数,其间以 1 个空格分隔。

输入样例:

3
10 10
1 3
3 5
5 7
7 9
1 2
2 4
2 6
3 8
9 10
1 9
10 10
1 3
3 5
5 7
7 9
9 1
1 2
2 4
4 8
8 10
10 1
10 10
1 3
3 5
5 7
7 9
9 1
2 4
4 8
8 10
10 2
10 6

输出样例:

Yes 5
No 0
No 2
考点:

并查集、BFS

解题:

本题考查的是并查集和BFS,通过并查集的基本模板来判断是否存在环,不过本题需要注意的是一个点可能在多个环当中,因此我们需要记录一下每个存在的个数,其中只有一个记录时则可以统计这个是一个环,再利用BFS算法来进行从环的起始点到终点的长度。

代码:
#include<iostream>
#include<vector>
#include<queue>
using namespace std;
const int MAXS = 1e5 + 5;
int f[MAXS], num[MAXS], Size[MAXS];
vector<int> cnt[MAXS];
int find(int x)
{if (f[x] != x) f[x] = find(f[x]);return f[x];
}
void solve()
{int N, M, start, end;cin >> N >> M;//初始化int huan = 0;for (int i = 1; i <= N; i++) {f[i] = i, cnt[i].clear(), num[i] = 0, Size[i] = -1;}while (M--){int a, b; cin >> a >> b;cnt[a].push_back(b);cnt[b].push_back(a);int f_a = find(a), f_b = find(b);if (f_a == f_b)//有环{num[f_a]++;start = a, end = b;}else{f[f_a] = f_b;num[f_b] += num[f_a];}}for (int i = 1; i <= N; i++)if (find(i) == i && num[i] == 1)huan++;if (huan != 1)//无环或者不止一个环{cout << "No " << huan << endl;}else{//BFSqueue<int> s;s.push(start);Size[start] = 1;while (!s.empty()){auto first = s.front(); s.pop();for (auto& second : cnt[first]){if (first == start && second == end) continue;if (Size[second] == -1){Size[second] = Size[first] + 1;s.push(second);}}}cout << "Yes " << Size[end] << endl;}}
int main()
{int T;cin >> T;while (T--){solve();}
}

题5:RC-u5 工作安排   分数 30

题目:

小 K 有 N 项工作等待完成,第 i 项工作需要花 ti单位时间,必须在 di时刻或之前完成,报酬为 pi。假设小 K 工作时刻从 0 开始,且同一时刻只能做一项工作、工作一旦开始则不可中断或切换至其他工作,请你帮小 K 规划一下如何选择合适的工作,使小 K 可以获得最多的报酬。

输入格式:
输入第一行是一个正整数 T (≤5),表示数据的组数。

接下来有 T 组数据,每组数据第一行是一个正整数 N (≤5000),表示待完成工作的数量。接下来的 N 行,每行三个非负整数 ti、di、pi(均 ≤5000;1≤i≤N),表示第 i 项工作需要花费的时间、截止时间以及报酬。

输出格式:
对于每组数据,输出小 K 能获得最多的报酬是多少。

输入样例:

3
5
1 2 50
3 3 100
1 5 1
3 2 5000
4 5 30
5
1 2 50
3 3 20
1 5 1
3 2 5000
4 5 30
5
1 2 50
3 3 100
1 5 1
3 2 5000
5 5 800

输出样例:

101
80
800
考点:

01背包

解题:

本题主要考察的是01背包问题,将时间作为背包的容量,将完成的任务看作所占空间大小(t、d)和价值(p),其中所占空间是一个弹性的范围【t—(d-t)】。其次,我们在执行dp的过程中如果d大的而p小的在前进行判断则会影响dp的进行,因此我们需要按照d从小到大的顺序进行排序。

代码:
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
const int MAXS = 5005;
typedef struct Node {int t;int d;int p;
};
Node node;
vector<Node> cnt;
bool cmp(Node a, Node b) {return a.d < b.d;
}
long long int solve()
{long long int ans = 0;int N; cin >> N;cnt.clear(); long long int dp[MAXS] = { 0 };for (int i = 0; i < N; i++){cin >> node.t >> node.d >> node.p;cnt.push_back(node);}//sortsort(cnt.begin(), cnt.end(), cmp);//(t)-(d-t)的时间内for (auto& a : cnt){for (int i = a.d; i >= a.t; i--){dp[i] = max(dp[i], dp[i - a.t] + a.p);ans = max(ans, dp[i]);}}return ans;
}
int main()
{int T; cin >> T;while (T--){cout << solve() << endl;}return 0;
}

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

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

相关文章

QT报红色错误,实际可以编译

QT报红色错误&#xff0c;实际可以编译&#xff0c;看着难受&#xff0c;如何去掉报警 进入插件 勾选框去掉&#xff0c;然后重启QT

Java——循环控制for,while,do...while

目录 1.for循环控制 基本介绍 基本语法 流程分析 案例演示&#xff1a; 注意事项和细节说明 练习题 2.while循环控制 基本语法 流程图 案例演示1 注意事项和细节说明 案例演示2 ​3.do...while循环控制 基本语法 说明 流程图 注意事项和细节说明 练习题…

杂项运算符及运算符的优先级

文章目录 常见的杂项运算符运算符的优先级特殊运算符运算符重载运算符的结合性实际应用中的注意事项1. 空条件运算符 (Null Coalescing Operator)JavaScript 示例: 2. 范围运算符 (Range Operator)Swift 示例: 3. 模式匹配运算符 (Pattern Matching)Rust 示例: 4. 解构赋值运算…

电信运营商推销套餐涉嫌侵犯消费者权益,如何维护自身权益?

近日&#xff0c;有消费者反映某电信运营商在推荐业务时存在误导和欺骗行为&#xff0c;侵犯了消费者的合法权益。本文将分析该事件中运营商的违规行为&#xff0c;以及消费者可以采取的维权措施。 一、运营商涉嫌违规的行为 1. 误导推销&#xff0c;未充分履行告知义务 工作…

2024年获客新渠道,大数据爬虫获客:技术实现精准抓取数据资源

**2024年获客新渠道&#xff1a;大数据爬虫获客及技术实现精准抓取数据资源** ### 一、大数据爬虫获客概述 在2024年&#xff0c;随着大数据技术的不断发展和互联网的普及&#xff0c;大数据爬虫获客已经成为企业获取客户信息、实现精准营销的重要渠道。爬虫技术通过自动化程…

C# 12 新增功能实操!

前言 今天咱们一起来探索并实践 C# 12 引入的全新功能&#xff01; C#/.NET该如何自学入门&#xff1f; 注意&#xff1a;使用这些功能需要使用最新的 Visual Studio 2022 版本或安装 .NET 8 SDK 。 主构造函数 主构造函数允许你直接在类定义中声明构造函数参数&#xff0c;…

从零开始编写一个Chrome插件:详细教程

个人名片 🎓作者简介:java领域优质创作者 🌐个人主页:码农阿豪 📞工作室:新空间代码工作室(提供各种软件服务) 💌个人邮箱:[2435024119@qq.com] 📱个人微信:15279484656 🌐个人导航网站:www.forff.top 💡座右铭:总有人要赢。为什么不能是我呢? 专栏导…

Pytorch笔记1

建议点赞收藏关注&#xff01;持续更新至pytorch大部分内容更完。 整体框架如下 目录 gpu加速数据数据结构张量TensorVariable 预处理数据增强 模型构建模块组织复杂网络初始化网络参数定义网络层 损失函数创建损失函数设置损失函数超参数选择损失函数 优化器管理模型参数管理…

“八股文”:程序员的福音还是梦魇?

——一场关于面试题的“代码战争” 在程序员的世界里&#xff0c;“八股文”这个词儿可谓是“如雷贯耳”。不&#xff0c;咱们可不是说古代科举考试中的那种八股文&#xff0c;而是指程序员面试中的那些固定套路的题目。如今&#xff0c;各大中小企业在招聘程序员时&#xff0…

无为自然与机巧器械

无为自然与机巧器械 一天&#xff0c;庄周与蔺且正在整理这些天来为求道之人回答的谈话录&#xff0c;又来了一位士。这位士提了这样一个问题&#xff1a;   “庄周先生&#xff0c;您的学说以无为自然为主&#xff0c;那么&#xff0c;您是不是主张将一切人所创造出来的机巧…

vite解决前端跨域步骤

Vite 解决跨域问题的原理主要是通过其内置的开发服务器功能实现的&#xff0c;具体来说&#xff0c;是通过 HTTP 代理&#xff08;HTTP Proxy&#xff09;机制。在开发环境中&#xff0c;Vite 服务器可以配置为一个代理服务器&#xff0c;将前端应用发出的请求转发到实际的后端…

Overlay网络

Overlay 介绍 Overlay网络是将已有的物理网络&#xff08;Underlay网络&#xff09;作为基础&#xff0c;在其上建立叠加的逻辑网络&#xff0c;实现网络资源的虚拟化。 传统网络带来了以下一些问题&#xff1a; ● 虚拟机规模受 网络规格限制在传统二层网络环境下&#xff0…

ConcurrentHashMap 和 Hashtable的区别

ConcurrentHashMap 和 Hashtable 的区别&#xff1a; 1. 线程安全机制&#xff1a; - ConcurrentHashMap 采用分段锁&#xff08;Segment&#xff09;的机制实现线程安全。它将数据分成多个段&#xff08;Segment&#xff09;&#xff0c;每个段都有一个独立的锁。这样&#xf…

暑期计划总结

每日安排 早上用来学习新知识 中午用于巩固 晚上再尝试难一点的 注意背单词&#xff0c;题目老是看不明白 重心放在图论 目标 cf立志上1600

泰迪智能科技大数据实验室——陕西省高校合作成功案例

近年来&#xff0c;陕西省紧跟国家大数据发展战略&#xff0c;积极推进大数据产业发展。在政策扶持、产业布局、技术创新等方面取得显著成效。泰迪智能科技大数据实验室立足陕西&#xff0c;携手西安邮电大学、西安财经大学、陕西科技大学镐京学院、宝鸡文理学院、渭南师范学院…

使用Selenium爬虫批量下载AlphaFold数据库中的PDB文件

注意&#xff1a;本方法使用了python&#xff0c;下载速度一般&#xff0c;如果需要更快的大批量下载可以考虑使用其他方法&#xff0c;例如FTP Alphafold数据库其实提供了许多物种的蛋白质组&#xff1a; AlphaFold Protein Structure Database 但是如果你搜索的物种不在这个…

【从0制作自己的ros导航小车:上位机篇】02、ros1多机通讯与坐标变换可视化

从0制作自己的ros导航小车 前言一、ros1多机通讯二、rviz可视化小车坐标系 前言 上节课完成了里程计数据与坐标变换发布&#xff0c;但是还没有测试&#xff0c;本节进行测试&#xff0c;测试之前需要知道一件事&#xff0c;上位机也就是开发板一般不做可视化用&#xff0c;因…

python包dateutil

python-dateutil 是一个 Python 第三方库&#xff0c;它提供了一系列强大的扩展来解析、操作、验证和格式化日期和时间。这个库是对 Python 标准库中 datetime 模块的补充&#xff0c;提供了许多实用的功能&#xff0c;比如解析各种格式的日期时间字符串、处理时区、计算相对日…

Python 教程(七):match...case 模式匹配

目录 专栏列表前言基本语法match 语句case 语句 模式匹配的类型示例具体值匹配类型匹配序列匹配星号表达式命名变量复杂匹配 模式匹配的优势总结 专栏列表 Python教程&#xff08;一&#xff09;&#xff1a;环境搭建及PyCharm安装Python 教程&#xff08;二&#xff09;&…

网络边界安全强化:实战技巧与策略部署

引言 网络边界安全是企业网络安全防护的第一道屏障&#xff0c;其重要性不言而喻。随着网络攻击手段的日益多样化和复杂化&#xff0c;如何有效强化网络边界安全&#xff0c;成为业界关注的焦点。本文将深入探讨网络边界安全强化的实战技巧与策略部署&#xff0c;为企业提供一…