草庐IT

华为OD机试Python记录

化科大人 2024-04-19 原文

回忆版

1.打印文件(100分)

题目描述:

有5台打印机打印文件,每台打印机有自己的待打印队列。打印的文件内容有优先级,有1-10不同的优先级,其中数字越大,优先级越高。打印机会从自己的队列中选择优先级最高的文件来打印。如果队列中存在相同优先级的文件,那么选择最先进入队列的文件进行打印。

输入描述:

每个输入一个测试用例,一个测试用例第1行给出事件个数N(0<N<1000)。接下来N行,分别表示发生的事件。共有两种事件:1.“IN P NUM”,表示一个拥有优先级NUM的文件放到打印机P的待打队列。0<p<5,0<num<=10。2.“OUT P”,表示打印机P进行一次文件打印,同时该文件出列。

输出描述:

每次“OUT P”事件,输出文件的编号,如果队列为空,输出“NULL”。文件编号定义:“IN P NUM”事件发生第X次,此处待打文件编号为X,编号从1开始。

示例:

输入:
7
IN 1 1
IN 1 2
IN 1 3
IN 2 1
OUT 1
OUT 2
OUT 2

输出:
3
4
NULL

参考代码:通过率100%

n=int(input())

x,lst=0,[[] for i in range(5)]#lst表示5台打印机
for t in range(n):
    rd=list(input().split())
    if rd[0] == "IN":
        x+=1
        lst[int(rd[1])-1].append((x,int(rd[2])))
    else:
        idx,pl=0,int(rd[1])-1 #idx表示文件编号,pl表示打印机编号
        if len(lst[pl])>0:
            for i in range(1,len(lst[pl])):
                #遍历找出最高优先级文件
                if lst[pl][i][1]>lst[pl][idx][1]:
                    idx=i
            print(lst[pl][idx][0])
            lst[pl].pop(idx)
        else:
            print("NULL")

2.寻找链表中间节点(100分)

题目描述:

给定一个链表L,编写程序输出链表中间节点保存的数据,如果有两个节点,那么输出后一个节点的数据。例如,L为1→7→5,输出7;L为1→2→3→4,输出3。

输入描述:

第一行给出首节点地址以及链表节点个数。节点地址是5位非负整数,NULL地址用-1表示,接下来N行,每行格式:地址、数据、 next。

输出描述:

输出目标节点保存的数据

示例

输入:
00100 4
00000 4 -1
00100 1 12309
33218 3 00000
12309 2 33218

输出:
3

参考代码:通过率93.333%

mp={}#表示链表
st,n=input().split()
n=int(n)
for _ in range(n):
    id,data,nxt=input().split()
    mp[id]=(int(data),nxt)

n = n//2

for i in range(2):#在链表中移动
    st=mp[st][1]
print(mp[st][0])

3.最优资源分配(200分)

题目描述:

某种芯片的最小容量单位为1.25G,总容量为M×1.25G,对该芯片的资源编号为1,2,。。。,M。芯片支持3种不同的配置,分别为A,B,C。

A:占用容量1.25g×1
B:占用1.25×2
C:占用1.25×8

一个硬件板上集成N个芯片,芯片编号为1,2,3,。。。。,N。各芯片相互独立,不能跨芯片占用资源。给定板卡芯片数量N,每块芯片的容量为M,按照用户配置后输出芯片资源占用情况,保证消耗的芯片数量最少。

资源分配规则:按照芯片编号从小到大进行资源分配,芯片资源被占用则标记为1,未占用标记为0.
用户配置序列:用户配置按照顺序来进行配置,如果某个配置超过了芯片的容量,则丢弃该配置,继续遍历后续的配置。

输入描述

M:每块芯片容量M×1.25G
N:芯片数量,1-32
用户配置:例如ACABA,长度不超过1000

输出描述

每块芯片的占用情况

示例

输入
8
2
ACABA

输出
11111000
11111111

说明
第一个配置A:占用第一块芯片的第一个资源,占用情况为
10000000
00000000
第二个配置C:第一块芯片的剩余容量(8.75)不够配置C,所以用第二个芯片来配置C,占用情况为
10000000
11111111

……(省略)

第五个配置A:第一块芯片所剩的容量仍然够配置A,占用该芯片的第五个资源,占用情况
11111000
11111111

参考代码:通过率100%

m = int(input())
n = int(input())
str = list(input())
ch = [0 for i in range(n)]#表示每个芯片使用的容量

for c in str:
    val = 1
    if c == "A":
        val = 1
    elif c == "B":
        val = 2
    else:
        val = 8
        #计算配置对应的容量
    for i in range(n):
        #按照顺序寻找剩余容量足够的芯片
        if m - ch[i] >= val:
            ch[i] += val
            break

for i in range(n):
	#根据每个芯片已使用的容量输出
    for j in range(m):
        if j < ch[i]:
            print("1",end="")
        else:
            print("0",end="")
    print("")

有关华为OD机试Python记录的更多相关文章

  1. python - 如何使用 Ruby 或 Python 创建一系列高音调和低音调的蜂鸣声? - 2

    关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭4年前。Improvethisquestion我想在固定时间创建一系列低音和高音调的哔哔声。例如:在150毫秒时发出高音调的蜂鸣声在151毫秒时发出低音调的蜂鸣声200毫秒时发出低音调的蜂鸣声250毫秒的高音调蜂鸣声有没有办法在Ruby或Python中做到这一点?我真的不在乎输出编码是什么(.wav、.mp3、.ogg等等),但我确实想创建一个输出文件。

  2. ruby - Sinatra:运行 rspec 测试时记录噪音 - 2

    Sinatra新手;我正在运行一些rspec测试,但在日志中收到了一堆不需要的噪音。如何消除日志中过多的噪音?我仔细检查了环境是否设置为:test,这意味着记录器级别应设置为WARN而不是DEBUG。spec_helper:require"./app"require"sinatra"require"rspec"require"rack/test"require"database_cleaner"require"factory_girl"set:environment,:testFactoryGirl.definition_file_paths=%w{./factories./test/

  3. ruby-on-rails - Rails 5 Active Record 记录无效错误 - 2

    我有两个Rails模型,即Invoice和Invoice_details。一个Invoice_details属于Invoice,一个Invoice有多个Invoice_details。我无法使用accepts_nested_attributes_forinInvoice通过Invoice模型保存Invoice_details。我收到以下错误:(0.2ms)BEGIN(0.2ms)ROLLBACKCompleted422UnprocessableEntityin25ms(ActiveRecord:4.0ms)ActiveRecord::RecordInvalid(Validationfa

  4. Python 相当于 Perl/Ruby ||= - 2

    这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:Pythonconditionalassignmentoperator对于这样一个简单的问题表示歉意,但是谷歌搜索||=并不是很有帮助;)Python中是否有与Ruby和Perl中的||=语句等效的语句?例如:foo="hey"foo||="what"#assignfooifit'sundefined#fooisstill"hey"bar||="yeah"#baris"yeah"另外,类似这样的东西的通用术语是什么?条件分配是我的第一个猜测,但Wikipediapage跟我想的不太一样。

  5. java - 什么相当于 ruby​​ 的 rack 或 python 的 Java wsgi? - 2

    什么是ruby​​的rack或python的Java的wsgi?还有一个路由库。 最佳答案 来自Python标准PEP333:Bycontrast,althoughJavahasjustasmanywebapplicationframeworksavailable,Java's"servlet"APImakesitpossibleforapplicationswrittenwithanyJavawebapplicationframeworktoruninanywebserverthatsupportstheservletAPI.ht

  6. 华为OD机试用Python实现 -【明明的随机数】 2023Q1A - 2

    华为OD机试题本篇题目:明明的随机数题目输入描述输出描述:示例1输入输出说明代码编写思路最近更新的博客华为od2023|什么是华为od,od薪资待遇,od机试题清单华为OD机试真题大全,用Python解华为机试题|机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南华为o

  7. 华为常用命令 - 2

    system-view进入系统视图quit退到系统视图sysname交换机命名vlan20创建vlan(进入vlan20)displayvlan显示vlanundovlan20删除vlan20displayvlan20显示vlan里的端口20Interfacee1/0/24进入端口24portlink-typeaccessvlan20把当前端口放入vlan20undoporte1/0/10删除当前VLAN端口10displaycurrent-configuration显示当前配置02配置交换机支持TELNETinterfacevlan1进入VLAN1ipaddress192.168.3.100

  8. python - 如何读取 MIDI 文件、更改其乐器并将其写回? - 2

    我想解析一个已经存在的.mid文件,改变它的乐器,例如从“acousticgrandpiano”到“violin”,然后将它保存回去或作为另一个.mid文件。根据我在文档中看到的内容,该乐器通过program_change或patch_change指令进行了更改,但我找不到任何在已经存在的MIDI文件中执行此操作的库.他们似乎都只支持从头开始创建的MIDI文件。 最佳答案 MIDIpackage会为您完成此操作,但具体方法取决于midi文件的原始内容。一个MIDI文件由一个或多个音轨组成,每个音轨是十六个channel中任何一个上的

  9. 「Python|Selenium|场景案例」如何定位iframe中的元素? - 2

    本文主要介绍在使用Selenium进行自动化测试或者任务时,对于使用了iframe的页面,如何定位iframe中的元素文章目录场景描述解决方案具体代码场景描述当我们在使用Selenium进行自动化测试的时候,可能会遇到一些界面或者窗体是使用HTML的iframe标签进行承载的。对于iframe中的标签,如果直接查找是无法找到的,会抛出没有找到元素的异常。比如近在咫尺的例子就是,CSDN的登录窗体就是使用的iframe,大家可以尝试通过F12开发者模式查看到的tag_name,class_name,id或者xpath来定位中的页面元素,会抛出NoSuchElementException异常。解决

  10. python ffmpeg 使用 pyav 转换 一组图像 到 视频 - 2

    2022/8/4更新支持加入水印水印必须包含透明图像,并且水印图像大小要等于原图像的大小pythonconvert_image_to_video.py-f30-mwatermark.pngim_dirout.mkv2022/6/21更新让命令行参数更加易用新的命令行使用方法pythonconvert_image_to_video.py-f30im_dirout.mkvFFMPEG命令行转换一组JPG图像到视频时,是将这组图像视为MJPG流。我需要转换一组PNG图像到视频,FFMPEG就不认了。pyav内置了ffmpeg库,不需要系统带有ffmpeg工具因此我使用ffmpeg的python包装p

随机推荐