CSDN 编程竞赛二十三期题解

news/2024/11/8 15:16:31/

竞赛总览

CSDN 编程竞赛二十三期:比赛详情 (csdn.net)

竞赛题解

题目1、排查网络故障

A地跟B地的网络中间有n个节点(不包括A地和B地),相邻的两个节点是通过网线连接的。正常的情况下,A地和B地是可以连通的,有一天,A地和B地突然不连通了,已知只有一段网线出问题(两个相邻的节点)小明需要排查哪段网线出问题。他的排查步骤是:1.选择某个中间节点。2.在这个节点上判断跟A地B地是否连通,用来判断那一边出问题。请问小明最少要排查多少次,才能保证一定可以找到故障网线。

题目描述有二分查找的意思,直接输出结果即可。

#include <cstdio>
#include <cmath>int main () {long long int n; scanf ("%lld", &n);printf ("%lld", (long long int) (log2 (n) + 1));return 0;
}

题目2、零钱兑换

给定数组arr,arr中所有的值都为正整数且不重复。每个值代表一种面值的货币,每种面值的货币可以使用任意张,再给定一个aim,代表要找的钱数,求组成aim的最少货币张数。如果无解,请返回-1。

当背包问题做,套背包问题的DP模板解决。

不过,这道题的输入格式特别不友好,数据格式形如[1,2,3],4。需要逐个字符读入并手动处理输入数据。

bool input (int& t) {int result = 0;char str = getchar ();while (str >= '0' && str <= '9') {result = result * 10 + (str - '0');str = getchar ();}t = result;if (str == ']') {getchar ();return false;}return true;
}

在main函数中,先调用一次getchar函数,吃掉数据开头的左中括号字符。然后使用while循环调用input函数,即可读入前n-1个数据。待input函数返回false时,说明数组已经读完,但此时跳出循环了,还要单独再处理一下列表中最后一个数据。

竞赛中只能使用在线代码编辑器,无法使用本地IDE调试,再加上这个输入格式太可恶,导致此题花费的时间远超预期。这也算是本场竞赛的一个坑了吧,看来以后要多练习一下对异形输入数据的处理过程。

题目3、清理磁盘空间

小明电脑空间满了,决定清空间。为了简化问题,小明列了他个人文件夹(/data)中所有末级文件路径和大小,挑选出总大小为m的删除方案,求所有删除方案中,删除操作次数最小是多少。一次删除操作:删除文件或者删除文件夹。如果删除文件夹,那么该文件夹包含的文件都将被删除。文件夹的大小:文件夹中所有末级文件大小之和。

由于要分割文件路径,这个题涉及大量字符串处理操作。本人对C++的string类不太熟悉,但比赛时调试界面又非常不友好,无法本地调试,因此果断放弃这题。

试了一下,答案都很小,所以直接开启骗分模式。输出2可以通过4个测试点,这里博主选择先骗到其它6个点(基本上都是个位数),然后再输出2结束此题。

题目4、交际圈

小明参加了个大型聚会。聚会上有n个人参加,我们将他们编号为1..n,有些人已经互相认识了,有些人还不认识。聚会开始后,假设A跟B认识,A会给所有他认识的人介绍B,原先跟A认识,但不认识B的人,都会在此时,跟B互相认识。当所有人都把自己认识的人介绍一遍后,此时n个人就会形成k个交际圈,同一个交际圈中,两两互相认识。不同的交际圈之间,互相不认识。问题:当所有人都把自己认识的人介绍一遍后,形成了多少个交际圈?

这道题全篇都在描述一个关键词:认识。看这段描述就知道要用并查集算法,所以直接打并查集模板就可以通过此题了。


http://www.ppmy.cn/news/11397.html

相关文章

C#语言实例源码系列-实现停车场系统项目-上

专栏分享 点击跳转=>Unity3D特效百例点击跳转=>案例项目实战源码点击跳转=>游戏脚本-辅助自动化点击跳转=>Android控件全解手册👉关于作者 众所周知,人生是一个漫长的流程,不断克服困难,不断反思前进的过程。在这个过程中会产生很多对于人生的质疑和思考,于是…

101.对称二叉树 | 递归 + 迭代

对称二叉树 leetcode : https://leetcode.cn/problems/symmetric-tree/ 参考 对称二叉树 递归思路 首先在开始时, 一定要注意, 对称二叉树对比的并不是一个节点的左右子树, 而是两棵树, 这个很关键! 对比时是内侧和内侧对比, 外侧和外侧对比, 递归三步 : 确定递归的参数以…

Linux操作系统常用命令

✅作者简介&#xff1a;热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏&#xff1a;Java案例分…

MyBatis批量插入的五种方式

MyBatis利用For循环批量插入MyBatis的手动批量提交MyBatis以集合方式批量新增&#xff08;推荐&#xff09;MyBatis-Plus提供的SaveBatch方法MyBatis-Plus提供的InsertBatchSomeColumn方法&#xff08;推荐&#xff09; 文章目录1.项目准备1.1 pom文件1.2 yml文件1.3 User类2.M…

大二层网络概述

要想了解大二层网络&#xff0c;必须要先了解传统三层网络和传统二层网络&#xff0c;最后根据大二层网络和后者的区别&#xff0c;可以清晰地了解大二层网络。 传统三层网络 传统数据中心采用三层网络架构&#xff0c;即整个网络由接入层、汇聚层和核心层组成&#xff0c;流…

Linux驱动开发基础__ Linux中断系统中的重要数据结构

目录 1 整体概述 2 irq_desc 数组 3 irqaction 结构体 4 irq_data 结构体 5 irq_domain 结构体 6 irq_chip 结构体 1 整体概述 该文章内容&#xff0c;可以从 request_irq(include/linux/interrupt.h)函数一路分析得到。 能弄清楚下面这个图&#xff0c;对 Linux 中…

Dbeaver连接ES问题一站解决

前言 最近几天一直做ES的TPS测试&#xff0c;每次看数据ES的数据都在嫌麻烦&#xff08;在postman指定索引通过url请求查看数据&#xff09;。最后决定还是整整Dbeaver连接ES。 一、当前境况 1、ES版本比较老&#xff0c;还是6.4.2的 2、Dbeaver直接连接已经提示支持8.x版本 3…

学习python,我使用代码悄悄集齐了五福~哎嘿嘿

啊哈哈哈哈&#xff0c;我又又又来啦 这不是快春节了吗&#xff0c;支付宝等一些集五福活动又又又又一次的到来 今天呢&#xff0c;写一个啥呀我也不晓得&#xff0c;啊哈哈哈哈哈 今天写一个%90会出敬业福哦&#xff0c;啊哈哈哈哈 1.制作文字福 这个其实挺“简单”的&…