educoder答案pythonnumpy_Educoder 题解

2023-11-19

Solution

4.2:

第一关:

求个导发现有两个根,分别二分就行了

importnumpy as np

E= 1e-6

########## begin ###########请在此填写代码, 计算6*np.exp(x)-113*x+17=0的根

deff(x):return 6*np.exp(x)-113*x+17

defdivd(L,R):while(L

mid=(L+R)/2

if(abs(f(mid))<=E):returnmidif(f(mid)

R=midelse:

L=middefdiv(L,R):while(L

mid=(L+R)/2

if(abs(f(mid))<=E):returnmidif(f(mid)>-E):

R=midelse:

L=midprint("%.4f"%divd(0,1.0))print("%.4f"%div(4.0,5.0))########## end ##########

第二关:

不难发现h的值依赖于角度θ,且θ满足sinθ/θ=L/S,即S×sinθ/θ-L=0 对该式求导,发现其单减,且显然0

又因为有h=L/2*tan(θ/2),这样就做完了

from math import *L, n, C=map(float, input().split())

E=1e-8S=(1+n*C)*Ldefdivd(l,r):while(l

mid=(l+r)/2val=S*sin(mid)/mid-Lif(abs(val)<=E):returnmidif(val

r=midelse:

l=mid

t=divd(0,pi/2)

h=L/2*tan(t/2)########## begin ###########请在此填写代码,求方程的根

########## end ##########

print('%.4f' % h)

4.3:

第一关:

显然由某一个点出发的最小积依赖于由他下方点出发的最小积或右下方出发的最小积,取二者中的最小值

n =eval(input())

dp=[]for i inrange(n):

X=dp.append(list(map(int, input().split())))for i in range(n-2,0,-1):for j in range(0,i+1,1):

dp[i][j]*=min(dp[i+1][j+1],dp[i+1][j])

dp[0][0]*=min(dp[1][0],dp[1][1])print(dp[0][0]

第二关:

递归太麻烦了,for循坏可以O(n)搞完,效率更高还好写

dp[i]表示以i为起点的最大子序列积,有dp[i]=max(dp[i+1]×A[i],dp[i])(分别对应将A[i]加入以A[i+1]为起始的最大子序列或不加入单独考虑)

最末尾显然只能单独考虑,有dp[n-1]=A[n-1],倒序for一遍,再取最大的dp[i]即可

代码中把A列表和dp列表共用了,不影响正确性

n =eval(input())

A=list(map(float, input().split()))for i in range(n-2,0,-1):

A[i]=max(A[i],A[i+1]*A[i])

A[0]=max(A[0],A[1]*A[0])

ans=0.0

for i in range(0,n,1):

ans=max(ans,A[i])print("%.2f"%(ans)

4.4:

第一题的话,考虑归并,先二分再合并,合并时注意两个子点集之间的配对情况

第二题,实际上和第一题一样,只不过处理的时候注意一下两个点的分组情况,只有不同组的时候才需要处理

第一关:

from math import *n=eval(input())

A=[]for i inrange(n):

x,y=map(int, input().split())

A.append((x,y))defDistance(a, b):return sqrt((a[0]-b[0])**2+(a[1]-b[1])**2)#求[low..high]区间内的最小点距

defFidMin(A,L,R):########## begin ##########

#请在此填写代码,返回区间[low,high]的最小点距

mid=(L+R)//2

if(L==R):return 1e9

if(L==R-1):returnDistance(A[L],A[R])

d=min(FidMin(A,L,mid),FidMin(A,mid+1,R))

tmp=[]

p0=A[mid]for i in range(L,R+1,1):

p1=A[i]if(abs(p1[0]-p0[0])=d):breakd=min(d,Distance(tmp[i],tmp[j]))returnd########## end ##########

A.sort()

result=FidMin(A,0,len(A)-1)print('%.3f' % result)

View Code

第二关:

importmath

n=eval(input())

A=[]for i in range(n*2):

group= 1 if i

A.append((x,y,group))defDistance(a, b):return math.sqrt((a[0]-b[0])**2+(a[1]-b[1])**2)#求[low..high]区间内的最小点距

defFidMin(A,L,R):########## begin ##########

#请在此填写代码,返回区间[low,high]的最小点距,且这两点属于不同的组

mid=(L+R)//2

if(L==R):return 1e9

if((L==R-1) and (A[L][2]==A[R][2])):return 1e9

if(L==R-1):returnDistance(A[L],A[R])

d=min(FidMin(A,L,mid),FidMin(A,mid+1,R))

tmp=[]

p0=A[mid]for i in range(L,R+1,1):

p1=A[i]if(abs(p1[0]-p0[0])

tmp.append(p1)

tmp.sort(key=lambda x:x[1])

upp=len(tmp)-1

for i in range(0,upp+1,1):for j in range(i+1,upp+1,1):if(abs(tmp[i][1]-tmp[j][1])>=d):break

if(tmp[i][2]!=tmp[j][2]):

d=min(d,Distance(tmp[i],tmp[j]))returnd########## end ##########

A.sort()

result=FidMin(A,0,len(A)-1)print('%.3f' % result)

View Code

4.5:

第一关:

递归就行了,先序遍历,每访问一个点答案+1

defCalcNodes(tree):########## begin ##########

#请在此填写代码

if(len(tree)==0):return0return 1+CalcNodes(tree[1])+CalcNodes(tree[2])########## end ##########

View Code

第二关:

中序中,根节点所在位置左边的序列就是左子树的中序序列,右边就是右子树的中序序列

然后先序序列其实就是根+左子树的先序序列+右子树的先序序列

后序序列是左子树后序+右子树后序+根

#pre_order:先根序列 in_order:中根序列#要求返回后跟序列

defget_postorder(pre_order, in_order):########## begin ##########

#请在此填写代码

l=len(in_order)if(l==0):return ''root=pre_order[0]if(l==1):returnrootfor i in range(0,l,1):if(in_order[i]==root):

pos=ibreakpol=''por=''iol=''ior=''

for i in range(1,1+pos,1):

pol=pol+pre_order[i]for i in range(1+pos,l,1):

por=por+pre_order[i]for i in range(0,pos,1):

iol=iol+in_order[i]for i in range(pos+1,l,1):

ior=ior+in_order[i]

p1=get_postorder(por,ior)

p2=get_postorder(pol,iol)return p2+p1+root########## end ##########

View Code

4.6:

第一关:

由于本题我们只关心序列的合法性,对于左括号,入栈,对于右括号,不必入栈,只需要与栈顶的左括号相匹配,匹配成功就继续处理下一个括号,失败就直接输出false

全部括号都处理完成后,如果栈内仍有未匹配的左括号,还是输出false

在处理过程中,记得留意空栈的情况

from queue importLifoQueue#括号匹配

S=input() #输入的字符串

sta=[]########## begin ###########请在此填写代码

tot=0

ans=Truedefmatch(x,y):if(x=='[' and y==']'):returnTrueif(x=='(' and y==')'):returnTrueif(x=='{' and y=='}'):returnTruereturnFalsefor i inS:if(i=='[' or i=='(' or i=='{'):

sta.append(i)

tot+=1

else:if(tot==0):

ans=Falsebreak

if(match(sta[tot-1],i)):del sta[tot-1]

tot-=1

else:

ans=Falsebreak

if(tot!=0):

ans=Falseprint(ans)

View Code

第二关:

与上一关有些不同,栈里维护的是括号在原字符串的索引而不是括号本身

新增一个ok列表,ok[i]表示第i位的括号是否匹配成功,ok[i]=1表示成功,ok[i]=0则是失败

匹配方法则与第一关类似,但因为需要计数,所以这里右括号也要入栈

最开始ok[i]均设为0,匹配成功,把这组左右括号对应的ok[i]改为1

答案就是ok[i]列表中最长的连续为1的子段的长度

复杂度O(n)

from queue importLifoQueue#括号匹配

S=input() #输入的字符串

sta=[]

ok=[]########## begin ###########请在此填写代码

tot=0

ans=0

cnt=0defmatch(x,y):if(x=='[' and y==']'):returnTrueif(x=='(' and y==')'):returnTrueif(x=='{' and y=='}'):returnTruereturnFalse

l=len(S)for i in range(0,l,1):

ok.append(0);for i in range(0,l,1):if(S[i]=='[' or S[i]=='(' or S[i]=='{'):

sta.append(i)

tot+=1

else:if(tot==0):

sta.append(i)

tot+=1

elif(match(S[sta[tot-1]],S[i])):

ok[i]=1ok[sta[tot-1]]=1

del sta[tot-1]

tot-=1

else:

sta.append(i)

tot+=1

for i in range(0,l,1):if(ok[i]==1):

cnt+=1ans=max(ans,cnt)else:

cnt=0print(ans)

View Code

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

educoder答案pythonnumpy_Educoder 题解 的相关文章

  • MySQL使用查询结果生成临时表

    MySQL中不支持对同一个表使用其查询结果更新or删除本表内数据 也就是update或delete后的where条件为针对相同表的select 解决方案是创建临时表做过度保存中间数据 可以直接使用查询结果来形成临时表 CREATE TABL
  • verilog奇数分频器的问题讲解(7分频为例)

    先不多哔哔 直接上代码 verilogHDL 代码的后面讲原理 module fenpin3 clk clk7 rst input clk rst 设置rst的目的是当rst 1的时候给cnt0和cnt1赋初值 output clk7 re
  • python sslerror_如何解决“不良握手”问题利用python请求时的SSLErrors

    I m trying to get access to the BambooHR API documentation here but I receive the following error params user username p
  • GREASELM: GRAPH REASONING ENHANCED LANGUAGE MODELS FOR QUESTION ANSWERING

    本文是LLM系列文章 针对 GREASELM GRAPH REASONING ENHANCED LANGUAGE MODELS FOR QUESTION ANSWERING 的翻译 GREASELM 图推理增强的问答语言模型 摘要 1 引言
  • 小霸王其乐无穷之函数回调

    小霸王游戏机是中国上一代备受欢迎的家用游戏机 它在1990年代初期开始流行 当时 由于游戏软件受限 国内的游戏市场相对匮乏 这使得小霸王游戏机成为许多70 80后童年时光中难忘的一部分 小霸王游戏机分为两大主要部分 游戏机本身和卡带 游戏机
  • Python中的CALL_FUNCTION指令

    在Python字节码中 CALL FUNCTION指令后跟的数字代表这次函数调用需要从栈上取出的参数的数量 具体来说 这个数字包括位置参数和关键字参数的数量 这个数字的低两位表示位置参数的数量 然后每两位表示一个关键字参数的数量 因此 如果
  • LLVM Language Reference Manual---阅读笔记

    文档地址 http llvm org docs LangRef html LLVM IR的标示符有两种基本类型 全局的和局部的 全局标示符以 开头 局部标示符以 开头 LLVM IR的标示符有三种形式 命名的 未命名的 常量 每一个Moud
  • Python pyecharts数据可视化

    Python pyecharts数据可视化 绘制精美图表 一 数据可视化 1 pyecharts介绍 2 初入了解 1 快速上手 2 简单的配置项介绍 3 案例实战 1 柱状图Bar 2 地图Map 省份 城市 地区 3 饼图Pie Pie
  • 【SMTP】【POP】电子邮件相关协议分析

    一 实验环境 通过普通路由器连接英特网的计算机一台 通过VMWare安装的Linux虚拟机一台 抓包工具 Wireshark 邮件处理软件 Foxmail 二 实验原理 SMTP工作原理 SMTP提供了一种邮件传输的机制 当收件方和发件方都
  • 公司实战 ElasticSearch+Kafka+Redis+MySQL

    一 需求 前一段时间公司要进行数据转移 将我们ES数据库中的数据转移到客户的服务器上 并且使用定时将新增的数据同步 在这过程中学到了很多 在此记录一下 二 技术栈 Mysql Redis ElasticSearch Kafka 三 方案 为
  • Ant Design Pro + Ant Design + React 踩坑记录

    1 自定义封装组件 1 1 组件通信 1 1 1 父传子 在本项目中对因为删除组件比较通用 所以对删除组件进行了封装 如下图我们对定义了通用删除组件 通过props传入回调方法 这样页面上只需要引用该组件 并传入自定义的删除函数即可引入 我
  • 单向链表实现(C语言)

    目录 一 简介 概念介绍 链接存储方法 结点结构 头指针head和终端结点 二 单向链表的使用 1 数据结构 2 从尾部添加append 3 从头部添加 add head 4 在链表任一指定位置节点按升序插入节点 5 查找并删除指定节点 6
  • [透彻]为什么要前后端分离?

    前后端分离的意义 前后端分离 已成为互联网项目开发的业界标准使用方式 前后端分离 会为以后的大型分布式架构 弹性计算架构 微服务架构打下坚实的基础 核心思想 前端页面调用后端的restuful api接口 并使用json数据进行交互 服务器
  • ug建模文本怎么竖着_【UG三维造型】:UG NX三维特征孔

    UG NX是集CAD CAM CAE功能于一体的软件集成系统 是当今较为流行的一种数控模具设计软件 主要是因为其功能强大 包括了世界上最强大 最广泛的产品设计应用模块 数控编程模块 模具设计模块 工程制图模块 装配设计模块 钣金设计模块 运
  • 第12课:生活中的构建模式——想要车还是庄园

    用程序来模拟生活 从剧情中思考构建模式 与工厂模式的区别 与组合模式的区别 构建模式的模型抽象 类图 基于升级版的实现 模型说明 应用场景 故事剧情 下周就要过年了 这是 Tony 工作后的第一个春节 还是在离家这么远的北京工作 所以肯定不
  • Ribbon负载均衡(三)SpringCloud Ribbon负载均衡详解及实现

    SpringCloud Ribbon负载均衡实现 文章目录 SpringCloud Ribbon负载均衡实现 1 User客户端调用方 1 1 修改User服务 Pom文件 引入Ribbon 1 2 RibbonConfiguration配
  • 经典算法题:大数乘法之乘法累加算法 Karatsuba算法(远远超出long long范围)

    问题 超过100位数字的整数的乘法 无法直接调用 运算 例如 求 1234567891011121314151617181920 2019181716151413121110987654321 的乘积结果 需要转化成数组问题或者字符串问题求
  • VMWare Ubuntu 共享文件夹失效解决办法

    VMWare Ubuntu 共享文件夹失效解决办法 Ubuntu 是 16 04 sudo vmhgfs fuse host mnt hgfs o allow other o uid 1000
  • 华为OD机试真题- 找数字【2023Q2】【JAVA、Python、C++】

    题目描述 给一个二维数组nums 对于每一个元素num i 找出距离最近的且值相等的元素 输出横纵坐标差值的绝对值之和 如果没有等值元素 则输出 1 例如 输入数组nums为 0 3 5 4 2 2 5 7 8 3 2 5 4 2 4 对于

随机推荐

  • float\double 型变量怎么判断是否大于、小于、等于 0

    刷题的时候做了这样一题 include
  • 机械键盘按键失灵解决办法(亲测有效,不用换不用拆,5分钟搞定)

    机械键盘不灵的小伙伴们 有福音了 不用换不用拆 只需要一根牙签 一把美工刀 或者剪刀 一瓶酒精 或者免洗消毒液 就可以修好上百块钱的东西 5分钟搞定 这两天不知道为啥机械键盘的ctrl键居然失灵了 有时候可以有时候不好用 怎么回事 一个上百
  • Windows下Git及TortoiseGit安装、配置及使用

    文章目录 1 Git TortoiseGit安装及配置 2 Git 常用命令 2 1 新建代码库 2 2 配置 2 3 增加 删除文件 2 4 代码提交 2 5 分支 2 6 查看信息 3 Git 样例 3 1 首次提交本地代码至远程仓库
  • AD22PCB库增大黑色区域的面积

  • 运维常用面试题及答案

    介绍一下你的运维经验和技能 答案 在回答这个问题时 可以简要概述你的运维经验和技能 包括你的工作经历 参与的项目 使用的工具和技术等 重点突出你在系统监控 故障排除 自动化部署 容量规划和安全性等方面的经验和技能 你在日常工作中使用过哪些自
  • 【C++11】shared_ptr

    1 shared ptr内存模型 shared ptr 包含了一个指向对象的指针和一个指向控制块的指针 每一个由 shared ptr 管理的对象都有一个控制块 它除了包含强引用计数 弱引用计数之外 还包含了自定义删除器的副本和分配器的副本
  • 剑指 Offer 58 - I. 翻转单词顺序--学到点小知识

    class Solution public String reverseWords String s String strings s trim split StringBuilder sb new StringBuilder for in
  • Angular开发(十八)-路由的基本认识

    一 学单词 angular路由中涉及到很多新单词词汇 单词 说明 使用场景 Routes 配置路由 保存URL对应的组件 以及在哪个RouterOutlet中展现 RouterOutlet 在html中标记挂载路由的占位容器 Router
  • 什么是hive的静态分区和动态分区,hive动态分区详解

    面试官问我 什么是hive的静态分区和动态分区 这题我会 欢迎点击此处关注我的个人公众号 交流更多知识 简述 分区是hive存放数据的一种方式 将列值作为目录来存放数据 就是一个分区 可以有多列 这样查询时使用分区列进行过滤 只需根据列值直
  • 如何通过DOI号来获取相关文献并下载?

    上一篇博客分享了如何利用PMID来获取相关的文献 这篇博客就对如何利用DOI号获取并下载相关文献做简单讲解 1 打开网址 链接为 https sci hub shop 2 在输入框中输入相关的DOI号 输入格式为DOI xxxxx 其次点击
  • 【电赛-软件】CCS安装教程

    CCS安装教程 下载 下载地址 下载地址 外链图片转存失败 源站可能有防盗链机制 建议将图片保存下来直接上传 img WhFWuuUy 1679146802762 ccspicture ccs download png 选择第二个CCSTU
  • CSDN-markdown编辑器使用说明

    欢迎使用Markdown编辑器写博客 本Markdown编辑器使用StackEdit修改而来 用它写博客 将会带来全新的体验哦 Markdown和扩展Markdown简洁的语法 代码块高亮 图片链接和图片上传 LaTex数学公式 UML序列
  • 从mpeg ts文件中提取I帧(6):I帧的显示

    I帧的显示依赖于opencv 这里用到的版本是3 4 0 显示的数据是pes解码后的rgb数据 代码比较简单 用opencv主要考虑到以后可以对ts流进行一些特征识别 include
  • 7-43 查询水果价格

    给定四种水果 分别是苹果 apple 梨 pear 桔子 orange 葡萄 grape 单价分别对应为3 00元 公斤 2 50元 公斤 4 10元 公斤 10 20元 公斤 首先在屏幕上显示以下菜单 1 apple 2 pear 3 o
  • 各种协议

    百度百科http baike baidu com view 16603 htm fromtitle E8 AE A1 E7 AE 97 E6 9C BA E7 BD 91 E7 BB 9C E5 8D 8F E8 AE AE fromid
  • json.decoder.JSONDecodeError: Invalid control character at: line 1 column 3,python中str与json类型转换报错如何解

    使用json转 json数据保密 再此不展示 判断类型 print type str json json dump json loads str json 报错如下 json decoder JSONDecodeError Invalid
  • 【Data Mining】【第五章作业】

    文章目录 一 单选题 二 多选题 三 填空题 一 单选题 1 回归分析中使用的距离是点到直线的垂直坐标距离 最小二乘准则是指 A B C D 正确答案 D 2 回归分析的步骤为 进行相关分析 建立预测模型 确定变量 确定预测值 计算预测误差
  • yolov4训练自己的数据集

    YOLOv4训练自己的数据集 1 电脑配置 2 下载并配置 3 测试 4 训练 1 电脑配置 win10 OpenCV4 1 VS2019 cuda10 2 2 下载并配置 1 YOLOv4网址 https github com Alexe
  • aix升级openssh_AIX6.1上源码编译升级openssh6.6p1

    最近因为绿盟扫描到AIX5 3 AIX6 1系统有openssh高危漏洞 OPENSSH6 4之前的都报高危漏洞 IBM官网上也只有最新的openssh6 0安装文件供下载 没办法只有自己试验的用源码来安装升级 期间各种报错 搞了差不多一周
  • educoder答案pythonnumpy_Educoder 题解

    Solution 4 2 第一关 求个导发现有两个根 分别二分就行了 importnumpy as np E 1e 6 begin 请在此填写代码 计算6 np exp x 113 x 17 0的根 deff x return 6 np e