Python每日一练:最长递增区间狄杰斯特拉(80分)K树(0分)

news/2024/10/20 8:29:10/

文章目录

  • 前言
  • 一、最长递增区间
  • 二、狄杰斯特拉(80)
  • 三、K树(0)
  • 总结


前言

很显然,Python的受众远远大于C++,其实笔者本人对Python的理解也是远强于C++的,C++纯粹是为了假装笔者是个职业选手才随便玩玩的,借着十多年前学的C的功底,强行假装的。
因职业原因,Python更适用于运维、网络、AI方向,所以用得很多。最近假装职业码农装过头了,写点Python代码都习惯性加 ; 了,更离谱的是CSDN对笔者的能力判断中,C++一个劲地涨,Python都连能力都没了…
所以以后也要用Python来解解题,经常锻炼一下。


提示:以下是本篇文章正文内容,下面案例可供参考

一、最长递增区间

题目描述:
给一个无序数组,求最长递增的区间长度。如:[5,2,3,8,1,9] 最长区间 2,3,8 长度为 3。(测试用例仅做参考,我们会根据代码质量进行评分)

输入描述:
第一行输入整数n。 第二行输入n个整数。

输出描述:
输出最长递增的区间长度。

示例:
输入
6
5 2 3 8 1 9

输出
3

在这里插入图片描述

代码如下(示例):

class Solution:def __init__(self) -> None:passdef solution(self, n, arr):result = 0# TODO: 请在此编写代码tmp = 1for i in range(n):if i+1 < n and arr[i+1] > arr[i]:tmp += 1else:result = tmp if tmp > result else resulttmp = 1return resultif __name__ == "__main__":n = int(input().strip())arr = [int(item) for item in input().strip().split()]sol = Solution()result = sol.solution(n, arr)print(result)

非常简单,没什么好解释的,C++也做过。一样的思路。result = tmp if tmp > result else result这行是if… else的省略写法。

二、狄杰斯特拉(80)

先申明:我也只解出80分。这题明显有点问题,示例都是错的,不能不让我怀疑测试数据是不是也有问题。我遇到好几次了,python和C++都没解出来100,当然思路是一样的。有看到满分的请给我个链接,去学习一下。先谢!

在这里插入图片描述

代码如下(示例):

class Solution:def __init__(self) -> None:self.max_dist = int(2e10)def solution(self, n, m, s, vector):result = self.max_dist# TODO: 请在此编写代码arr = [[self.max_dist for _ in range(n+1)] for _ in range(n+1)]for v in vector:arr[int(v[0])][int(v[1])] = int(v[2])pathed = [False for _ in range(n+1)]dist = [self.max_dist for _ in range(n+1)]prev = [-1 for _ in range(n+1)]for i in range(1, n+1):tmp = arr[s][i]if tmp < self.max_dist:dist[i] = tmpprev[i] = sdist[s] = 0pathed[s] = Truenode = sfor i in range(1, n+1):tmp = self.max_distfor j in range(1, n+1):if not pathed[j] and dist[j] < tmp:node = jtmp = dist[j]pathed[node] = Truefor k in range(n+1):val = arr[node][k]if not pathed[k] and val < self.max_dist:new_dist = dist[node] + valif new_dist < dist[k]:dist[k] = new_distprev[k] = noderesult = (dist[n] if dist[n] < self.max_dist else "INF")return resultif __name__ == "__main__":arr_temp = [int(item) for item in input().strip().split()]n = int(arr_temp[0])m = int(arr_temp[1])s = int(arr_temp[2])vector = []for i in range(m):vector.append([int(item) for item in input().strip().split()])   sol = Solution()result = sol.solution(n, m, s, vector)print(result)

反正没全通过,就不解释了,也不写C++版本的详解了。等我搞明白了再来改吧~嗯代码也有点长,懒得解释。

三、K树(0)

题目描述:
存在一棵包含n个节点的树。 每个节点都存在自己的颜色编号col[i]。 当两个相邻的节点a,b合并成一种a或者b时花费为col[a]+col[b]。 当我们将所有的节点都变为同一种颜色时,最小花费是?

输入描述:
第一行输入一个整数n。(1<=n<=1e6) 第二行输入节点的颜色编号 以下n-1行描述n条边.保证是节点连接成树。

输出描述:
输出最长递增的区间长度。

示例:
输入
6
5 2 3 8 1 9

输出
3

不会!
嗯,不是我不会k树(Kruskal最小生成树),深度优先搜索(Depth First Search)也是会的。这题有严重的问题,根本没给出col[i]参数!
而且就算给出参数我也不会,这应该不光是深度搜索的问题,Dijkstra才算中等难度,深度优先搜索在图论算法中,是一个级别的。题目描述问题有几个:
1、缺少col[i] 参数
2、如果有col[i],col[i]这个值会不会重复,就是颜色会不会重复,如果不会重复那倒简单了,深度优先搜索就行了。如果会重复,真心不会!


总结

不总结了,太菜!不会的太多,继续好好学习去了~ 老了也要学习!


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

相关文章

AcWIng1085. 不要62(数位DP)

文章目录 一、问题二、分析三、代码 一、问题 二、分析 这道题涉及的算法是数位DP。如果大家不懂数位DP的话&#xff0c;可以先去看作者之前的文章&#xff1a;第五十章 动态规划——数位DP模型 假设一个数 n n n&#xff0c;我们先求出从 1 1 1到 n n n当中&#xff0c;所有…

xawtv涉及的vivid系统调用分析

xawtv涉及的vivid系统调用分析 文章目录 xawtv涉及的vivid系统调用分析调用过程分析摄像头驱动程序必需的11个ioctl非必须必须 分析数据的获取过程1.请求分配缓冲区: ioctl(4, VIDIOC_REQBUFS // 请求系统分配缓冲区2.查询映射缓冲区:3.把缓冲区放入队列:4.启动摄像头5.用selec…

代码随想录算法训练营第三十天 | 航班问题、二维回溯

回溯法小结 本周小结&#xff01;&#xff08;回溯算法系列三&#xff09; | 代码随想录 (programmercarl.com) 性能分析 子集问题分析&#xff1a; 时间复杂度&#xff1a;O(n 2n)&#xff0c;因为每一个元素的状态无外乎取与不取&#xff0c;所以时间复杂度为O(2n)&…

登山 最长上升子序列问题 线性DP

&#x1f351; 算法题解专栏 &#x1f351; 洛谷 登山 登山 题目描述 五一到了&#xff0c;ACM队组织大家去登山观光&#xff0c;队员们发现山上一个有N个景点&#xff0c;并且决定按照顺序来浏览这些景点&#xff0c;即每次所浏览景点的编号都要大于前一个浏览景点的编号。…

用户界面对象的线程亲缘性第二篇: 设备上下文

在上一篇文章中&#xff0c;我们简单地介绍了控制窗口句柄的线程亲缘性规则。 今天&#xff0c;我们来讲讲设备上下文(Device Context, 简称 DC) 。 设备上下文也有一定程度的线程亲缘性。调用 DC 相关函数&#xff0c;例如 GetDC 的线程&#xff0c;必须在同一个线程中调用其…

PID整定二:基于Ziegler-Nichols的频域响应

PID整定二&#xff1a;基于Ziegler-Nichols的频域响应 1参考2连续Ziegler-Nichols方法的PID整定2.1整定方法2.2仿真示例 1参考 1.1根轨迹图的绘制及分析 1.2计算机控制技术01-3.4离散系统的根轨迹分析法 1.3PID控制算法学习笔记 2连续Ziegler-Nichols方法的PID整定 2.1整定…

leetcode:234.回文链表(详解)

前言&#xff1a;内容包括-题目&#xff0c;代码实现&#xff0c;大致思路&#xff0c;代码解读 题目&#xff1a; 给你一个单链表的头节点 head &#xff0c;请你判断该链表是否为回文链表。如果是&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 示例 1&…

Java日志详解

文章目录 1.日志的概述1.1 日志文件1.1.1 调试日志1.1.2 系统日志 1.2 JAVA日志框架1.2.1 为什么要用日志框架1.2.2 日志框架和日志门面 2.JUL2.1 JUL简介2.2 JUL组件介绍2.3 JUL的基本使用2.3.1 日志输出的级别2.3.2 日志的输出方式2.3.3 自定义日志的级别2.3.4 将日志输出到具…