当前位置: 首页 > news >正文

Python解题 - CSDN周赛第30期 - 天然气订单

本期比赛的在线测试系统好像出了点问题,导致很多选手最后提交的分数是0,而问哥也遇到好几次提交后一直显示“运行中”而没有结果的情况。鉴于之前遇到过类似情况,不停地刷新页面才得以继续。但是此问题已经存在并持续了好几期,极大地影响了参赛体验,希望官方重视起来并尽快修复。


第一题:天然气订单

天然气运输成本昂贵,危险性高,为了节省运输成本,提倡绿色环保,需要尽可能的优化订单配送,比如相同地区的天然气订单可以一次性配送。现需要向多个地区运输天然气。但是同一个地区可能有多个订单需求。当前仅只知道某些成对的订单是同一个地区的,同一个地区的天然气需要尽可能一次性配送从而降低运输成本,所以需要尽可能的将同一个地区的订单放在一起。订单的编号是1到n。

输入描述:输入第一行是两个正整数n,m,表示订单的数量和已知的关系数量。(1<=n,m<=10000);接下来有m行,每行两个正整数a和b,表示a号订单和b号订单属于同一个地区(1<=a,b<=n);接下来有n行,每行两个正整数x,y,分别表示该车完成A地任务的利润和B地任务的利润。

输出描述:输出第一行包含一个整数x,表示这些订单共来自x个不同的地区。接下来的输出包含x行,每行表示输出若干个订单编号,表示这些订单属于同一个地区,按照订单编号升序输出。优先输出最小的订单编号较小的地区。

示例:

示例
输入7 6
1 2
2 2
3 2
4 5
5 4
6 7
输出3
1 2 3
4 5
6 7

分析

看到“xx的编号是1到n”的描述,首先想到的就是并查集的数据结构。然后发现此题还是求连通子图(同属一个地区的订单),类似此前考过的《蚂蚁家族》和《交际圈》。但是本题除了要求连通子图的个数,还要输出每个子图中的所有节点。

使用深搜(dfs)应该也能做,如果用并查集的话,还需要用到并查集的两个优化操作:路径压缩和按秩合并,不然可能会超时。又因为最后要输出每个连通子图的所有节点,只需要把按秩合并后的并查集中最早出现的“祖先”作为键,其他成员作为值,生成一个字典即可。最后字典中键的个数即连通子图的个数,而每个连通子图的节点也已经排好序了,直接输出即可。

参考代码

n, m = map(int, input().strip().split())
nodes = list(range(n+1))# 路径压缩的查集操作
def find(n):if nodes[n] == n: return nnodes[n] = find(nodes[n])return nodes[n]for _ in range(m):a, b = map(int, input().strip().split())aa = find(a)bb = find(b)# 按秩合并的并集操作if aa < bb: nodes[bb] = aaelse: nodes[aa] = bbres = dict()
for i in range(1, n+1):if nodes[i] == i:res[i] = [i]else:res[find(nodes[i])].append(i)print(len(res))
for value in res.values():print(*value)

并查集的操作很简单,简单来讲,路径压缩就是每次查找时都把查找路径中所有的节点指向目前的“公共祖先”,使得后面的查找不用再重复查找路径;而按秩合并就是优先把数字更小(排在前面)的节点作为“祖先” ,这样可以使得并查集的树形结构深度最小,更加平衡。而本解法实际利用了按秩排序的最早公共祖先以及排序性质。


第二题:小艺读书

书是人类进步的阶梯。小艺每周因为工作的原因会选择性的每天多读几页或者少读几页。小艺想知道一本n页的书她会在周几读完。

输入描述:第一行输入n(1<=n<=1000);第二行输入7个整数,分别表示周一~周日的读书页数p(0<=p<=1000)。(不考虑7个整数都为0的情况)

输出描述:输出答案。(1-7)

示例:

示例
输入100
15 20 20 15 10 30 45
输出

6

分析

题目描述不是特别好,没有说明从哪一天开始读书,那就只能默认从周一开始了,虽然常识里感觉怪怪的。而测试用例也不全面,没有周日读完的情况,也就是输出7。对于考察循环数组的简单题来说,不完整的测试用例使得本题更水了。

解题方法就是循环模拟,下标每次加一,如果循环至下一周,下标要对7取模。最后输出下标即可。要注意的是如果是周日读完,此时下标为0,要特判输出7,但是本题的测试用例没有出现这种情况。

参考代码

n = int(input().strip())
pages = [int(item) for item in input().strip().split()]
i = 0
while n > 0:n -= pages[i]i = (i+1)%7
if i == 0: print(7)
else: print(i)

第三题:买苹果

小易去附近的商店买苹果,奸诈的商贩使用了捆绑交易,只提供6个每袋和8个每袋的包装(包装不可拆分)。 可是小易现在只想购买恰好n个苹果,小易想购买尽量少的袋数方便携带。如果不能购买恰好n个苹果,小易将不会购买。

输入描述:输入一个整数n,表示小易想购买n(1 ≤ n ≤ 100)个苹果

输出描述:输出一个整数表示最少需要购买的袋数,如果不能买恰好n个苹果则输出-1

示例:

示例
输入20
输出

3

分析

我猜本题原本是想考察完全背包,但是由于数据范围很小,1\leq n\leq 100,使用暴力穷举也能过。

因为要买恰好 n 个苹果,所以最多只能买 \frac{n}{6} 袋每袋6个装的苹果,和 \frac{n}{8} 袋每袋8个装的苹果,均向下取整(有点像百钱百鸡)。于是设 0\leq i\leq \frac{n}{6}0\leq j\leq \frac{n}{8},暴力枚举每一种 (i,j) 的组合,如果 6*j+8*j=n ,就把 i+j 的结果保存在集合里。最后输出集合中的最小值即可。如果不存在满足该等式的 (i,j),则集合为空,输出 -1。

参考代码

n = int(input().strip())
res = set()
for i in range((n//6)+1):for j in range((n//8)+1):if 6*i + 8*j == n:res.add(i+j)
if res: print(min(res))
else: print(-1)

算法复杂度为 O(n^2),准确来讲计算了 \frac{n^2}{48} 次,所以当 n 很小时,和使用DP完全背包的算法复杂度 O(mn)(m为物品的种类,本题为2)没有什么区别。关于完全背包,感兴趣的同学可以参考网上资料,问哥之前的文章也有涉及,此处不再赘述。 


第四题:圆桌

有N个客人与足够多张的圆桌。主人安排每位客人坐在一个圆桌边,但是每位客人希望自己左右边上分别有一些空座位,不然会觉得害羞。注意,如果一个客人所在的圆桌只有他一个人,那么他左边的空座位数量就是他右边的空座位数量。试问主人需要准备多少个座位,才能让每个客人舒适的坐下。

输入描述:第一行输入一个整数N,(1<=N<=10000),代表客人的数量;接下来N行,每行两个整数li与ri,(1<=i<=N,1<=li<=ri<=1000000000),代表第i位客人希望左边有li个空座位,右边有ri个空座位。

输出描述:输出一个整数,代表主人需要准备的最少座位数量。

示例:

示例
输入3
1 1
1 1
1 1
输出6

分析

第11期考过的老题,可以参考网上的题解,也可以参考我以前的文章。

本题有一定思维难度,当时问哥也是把时间浪费在证明算法的正确性上了,但如果想通了,代码不过寥寥数行。

相关文章:

Python解题 - CSDN周赛第30期 - 天然气订单

本期比赛的在线测试系统好像出了点问题&#xff0c;导致很多选手最后提交的分数是0&#xff0c;而问哥也遇到好几次提交后一直显示“运行中”而没有结果的情况。鉴于之前遇到过类似情况&#xff0c;不停地刷新页面才得以继续。但是此问题已经存在并持续了好几期&#xff0c;极大…...

移动WEB开发一、基础知识

零、文章目录 文章地址 个人博客-CSDN地址&#xff1a;https://blog.csdn.net/liyou123456789个人博客-GiteePages&#xff1a;https://bluecusliyou.gitee.io/techlearn 代码仓库地址 Gitee&#xff1a;https://gitee.com/bluecusliyou/TechLearnGithub&#xff1a;https:…...

07 二叉树

开始系统学习算法啦&#xff01;为后面力扣和 蓝桥杯的刷题做准备&#xff01;这个专栏将记录自己学习算法是的笔记&#xff0c;包括 概念&#xff0c; 算法运行过程&#xff0c;以及 代码实现&#xff0c;希望能给大家带来帮助&#xff0c;感兴趣的小伙伴欢迎评论区留言或者私…...

3|物联网控制|计算机控制-刘川来胡乃平版|第4章:过程通道与人机接口-4.1数字量输入输出通道接口|课堂笔记|ppt

...

从 ClickHouse 到 Apache Doris,腾讯音乐内容库数据平台架构演进实践

导读&#xff1a;腾讯音乐内容库数据平台旨在为应用层提供库存盘点、分群画像、指标分析、标签圈选等内容分析服务&#xff0c;高效为业务赋能。目前&#xff0c;内容库数据平台的数据架构已经从 1.0 演进到了 4.0 &#xff0c;经历了分析引擎从 ClickHouse 到 Apache Doris 的…...

linux线程的基本知识

这里用的是Linux的pthread线程库&#xff0c;需要加pthread线程库。 线程的创建 第一个参数是线程id的地址。第二个参数是线程属性&#xff0c;一般为NULL。第三个是要执行的函数。第四个是函数的参数&#xff0c;一般也为NULL 线程的等待&#xff0c;第一个参数是线程的id,第…...

docker swarm 集群服务编排部署指南(docker stack)

Docker Swarm 集群管理 概述 Docker Swarm 是 Docker 的集群管理工具。它将 Docker 主机池转变为单个虚拟 Docker 主机&#xff0c;使得容器可以组成跨主机的子网网络。Docker Swarm 提供了标准的 Docker API&#xff0c;所有任何已经与 Docker 守护程序通信的工具都可以使用…...

ESP开发环境搭建

一、windows中搭建 esp-idf tool(可选),下载连接如下:https://dl.espressif.com/dl/esp-idf/?idf4.4 下载安装tools后进入vscode进行插件安装&#xff08;未离线下载idf工具也可以通过第二步通过插件下载安装&#xff09; 1. vscode安装编译环境 ESP-IDF 需要安装一些必备工…...

内网安全——ssH协议WindowsLinux密码获取hashcat

目录 (一)横向移动-Linux把场-ssH协议&RSA密匙凭证 (二)Windows-密码获取-在线离线读取&密文破解&a...

【编程入门】应用市场(安卓版)

背景 前面已输出多个系列&#xff1a; 《十余种编程语言做个计算器》 《十余种编程语言写2048小游戏》 《17种编程语言10种排序算法》 《十余种编程语言写博客系统》 《十余种编程语言写云笔记》 《N种编程语言做个记事本》 目标 为编程初学者打造入门学习项目&#xff0c;使…...

【图像分类】卷积神经网络之LeNet5网络模型结构详解

写在前面: 首先感谢兄弟们的关注和订阅,让我有创作的动力,在创作过程我会尽最大能力,保证作品的质量,如果有问题,可以私信我,让我们携手共进,共创辉煌。 1. 前言 LeNet5算法是LeCun在1998年提出的卷积神经网络模型。大约90年代,由于支持向量机等算法的发现,深度学习…...

2023-JavaWeb最新整理面试题-TCP、Tomcat、Servlet、JSP等

Java基础面试题 一、JavaWeb专题 1.HTTP响应码有哪些 1、1xx&#xff08;临时响应&#xff09; 2、2xx&#xff08;成功&#xff09; 3、3xx&#xff08;重定向&#xff09;&#xff1a;表示要完成请求需要进一步操作 4、4xx&#xff08;错误&#xff09;&#xff1a;表示请…...

【云原生kubernetes】k8s Ingress使用详解

一、什么是Ingress 在上一篇关于k8s之service的使用一篇中提到&#xff0c;Service对集群之外暴露服务的主要方式有两种&#xff0c;NotePort和LoadBalancer&#xff0c;但这两种方式&#xff0c;都有一定的缺点&#xff0c;具体来说&#xff1a; NodePort 会占用很多集群机器…...

[数据结构]:顺序表(C语言实现)

目录 前言 顺序表实现 01-开发环境 02-文件布局 03-代码 01-主函数 02-头文件 03-SeqListCommon.cpp 04-SeqListPositionOperation.cpp 05-SeqListValueOperation.cpp 结语 前言 此专栏包含408考研数据结构全部内容&#xff0c;除其中使用到C引用外&#xff0c;全为…...

【大厂高频必刷真题100题】《有序矩阵中第 K 小的元素》 真题练习第27题 持续更新~

有序矩阵中第 K 小的元素 给你一个 n x n 矩阵 matrix ,其中每行和每列元素均按升序排序,找到矩阵中第 k 小的元素。 请注意,它是 排序后 的第 k 小元素,而不是第 k 个 不同 的元素。 你必须找到一个内存复杂度优于 O(n^2) 的解决方案。 示例 1: 输入:matrix = [[1,5,9…...

两年外包生涯做完,感觉自己废了一半....

先说一下自己的情况。大专生&#xff0c;17年通过校招进入湖南某软件公司&#xff0c;干了接近2年的点点点&#xff0c;今年年上旬&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落&#xff01;而我已经在一个企业干了五年的功能测试…...

02- OpenCV绘制图形及图像算术变换 (OpenCV基础) (机器视觉)

知识重点 OpenCV用的最多的色彩空间是HSV. 方便OpenCV做图像处理img2 img.view() # 浅拷贝img3 img.copy() # 深拷贝split(mat) 分割图像的通道: b, g, r cv2.split(img) # b, g, r 都是数组merge((ch1, ch2, ch3)) 融合多个通道cvtColor(img, colorspace): 颜…...

猜数字大小 II

力扣链接 力扣 题目描述&#xff1a; 我们正在玩一个猜数游戏&#xff0c;游戏规则如下&#xff1a; 我从 1 到 n 之间选择一个数字。你来猜我选了哪个数字。如果你猜到正确的数字&#xff0c;就会 赢得游戏 。如果你猜错了&#xff0c;那么我会告诉你&#xff0c;我选的数…...

CCNP350-401学习笔记(251-300题)

251、 Which IPv6 OSPF network type is applied to interface Fa0/0 of R2 by default? A. multipointB. broadcast C. Ethernet D. point-to-point 252、Which EIGRP feature allows the use of leak maps? A. neighborB. Stub C. offset-list D. address-family 253、W…...

掌握MySQL分库分表(二)Mysql数据库垂直分库分表、水平分库分表

文章目录垂直分表拆分方法举例垂直分库水平分表水平分库小结垂直角度&#xff08;表结构不一样&#xff09;水平角度&#xff08;表结构一样&#xff09;垂直分表 需求&#xff1a;商品表字段太多&#xff0c;每个字段访问频次不⼀样&#xff0c;浪费了IO资源&#xff0c;需要…...

算法训练营 day50 动态规划 单词拆分 多重背包理论基础

算法训练营 day50 动态规划 单词拆分 多重背包理论基础 单词拆分 139. 单词拆分 - 力扣&#xff08;LeetCode&#xff09; 给你一个字符串 s 和一个字符串列表 wordDict 作为字典。请你判断是否可以利用字典中出现的单词拼接出 s 。 注意&#xff1a;不要求字典中出现的单词…...

一文3000字用Postman从0到1实现UI自动化测试

“阅读本文大概需要4分钟。Postman不是做接口测试的吗&#xff1f;为什么还能做UI自动化测试呢&#xff1f; 其实&#xff0c;只要你了解Selenium的运行原理&#xff0c;就可以理解为什么Postman也能实现UI自动化测试了。 Selenium底层原理 运行代码&#xff0c;启动浏览器后…...

2023年美国大学生数学建模C题:预测Wordle结果建模详解+模型代码(一)

目录 前言 一、题目理解 背景 解析 字段含义: 建模要求 二、建模思路...

spring-boot 整合 前端框架 React 增删改查(附源码)

看了很多 关于 SpringBoot 增删改查 的文章 &#xff0c;但是 React 前端框架这块似乎没什么人玩&#xff0c;一般都是Vue进行整合 &#xff0c;所以想写一篇关于 React 整合 SpringBoot 增删改查的项目 React 学习区域 React中文教程: https://www.php.cn/doc/react/tutorial/…...

未来的城市:智慧城市定义、特征、应用、场景

智慧城市是通过连接一个地区的物理、经济和社会基础设施&#xff0c;以创新、有效和高效的方式应用和实施技术来发展城市的概念&#xff0c;以改善服务并实现更好的生活质量。智慧城市是一个将信息和通信技术融入日常治理的城市区域&#xff0c;旨在实现效率、改善公共服务、增…...

Qt线程池QThreadPool使用示例

目录前言1.线程池原理介绍2.QThreadPool详细介绍反复执行同一个任务设置线程过期时间线程数量信息3.QThreadPool示例4.总结前言 线程池顾名思义就是同时管理多个线程的"池子"&#xff0c;它是一种并发处理技术&#xff0c;在程序中使用线程池能够提高线程的使用效率…...

【Spring】难理解的Aop编程 | 入门?

作者&#xff1a;狮子也疯狂 专栏&#xff1a;《spring开发》 坚持做好每一步&#xff0c;幸运之神自然会驾凌在你的身上 目录一. &#x1f981; 前言二. &#x1f981; 常见概念2.1 常见术语2.2 AOP入门Ⅰ. &#x1f407; 功能场景Ⅱ. &#x1f407; 实现过程2.3 通知类型Ⅰ.…...

2 月 25 日,论道京城 | 云原生开源项目应用实践报名开启

在数字化转型的浪潮中&#xff0c;云原生已经逐渐成为人们关注的焦点。开源社区作为云原生技术创新的根据地&#xff0c;为云原生的产业发展打造了丰富的技术生态圈&#xff0c;也在广泛的实践中源源不断地创造着新的机遇。想知道云原生存储技术实现了怎样的突破吗&#xff1f;…...

第五、六章 贪心算法、回溯算法

贪心算法 适合于贪心算法求解的问题具有&#xff1a;贪心选择性质、最优子结构性质。 贪心算法可以获取到问题的局部最优解&#xff0c;不一定能获取到全局最优解。 贪心算法总是作出在当前看来最好的选择&#xff1b;并且每次贪心选择都能将问题化简为一个更小的与原问题具有…...

k8s-kubectl命令

文章目录一、kubectl 基本命令1、陈述式资源管理方法:2、声明式资源管理办法二、基本信息查看三、项目的生命周期创建kubectl run命令四、金丝雀发布(Canary Release)——陈述式管理方法五、声明式管理方法kubectl create 和 kubectl apply区别一、kubectl 基本命令 1、陈述式…...

自己电脑做网站服务器广域网访问/如何做网销

过去不久曾写过一篇视频如何添加字幕的教程&#xff0c;主要是让用户学会使用狸窝全能视频转换器可以把srt、ass类型的字幕添加到视频。大家可以看下(视频怎么加字幕 支持srt&#xff0c;ass字幕添加转换格式: http://www.leawo.cn/space-627-do-thread-id-31840.html)。那么有…...

成都最新疫情发布/seo推广专员招聘

1093 字符串AB (20 分) 题目链接 算法分析 依次遍历两个字符串,用on数组标记是否输出过 值为1表示输出过,值为0表示没有输出过. 代码实现 #include<bits/stdc.h> using namespace std; #define N 150 int on[N]; int main(){string a, b;getline(cin, a);getline(ci…...

wordpress tob8.0/手机百度电脑版入口

一 问题描述 问题描述前&#xff0c;请允许我&#xff0c;吐槽一下&#xff0c;这个问题困扰了一天&#xff0c;下面在业务层下的代码中&#xff0c;cache注解标注了value的名称&#xff0c;但是没有设置key&#xff0c;且传递的参数为 CrawlRecordParamVo crawlRecordParamV…...

广州品牌网站开发/站长之家域名

/*Name: NYOJ--24--素数距离问题Author: shen_渊 Date: 17/04/17 16:42Description: 原来代码看不下去了o(╯□╰)o */ #include<iostream> using namespace std; int isPrime(int); int main(){ios::sync_with_stdio(false);int T;cin>>T;while(T--){int n;cin&…...

手机网站建设万网/电商网站入口

java 生成4位随机数 验证码刘振兴代码分享2015年11月16日8166暂无评论public static String yzm(){String str "0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z";String str2[] str.split(",");//将字符串以,分割Random rand…...

网页动画/太原百度快速优化排名

现在&#xff0c;我们可以开始建立我们的模型啦。实际上数值计算都是由TensorFlow来完成&#xff0c;它使用了一个快速并高效的C后台程序。TensorFlow希望避免频繁地在Python和C之间切换&#xff0c;因为那样会降低计算速度。一般的工作流程是&#xff0c;首先为了定义所有的运…...