算法笔记/python/入门模拟查找元素

查找元素

  1. 考试座位号
import time
time_start=time.time()
     
n=int(input())
dic = {}
for i in range(n):
    a,b,c=input().split()
    dic[b] = a + ' ' + c
num=int(input())
#print(dic)
s = input()
item = s.split(' ')
ls = [eval('x') for x in item]
for i in range(num):
    print(dic[ls[i]])

time_end=time.time()
print('time cost',time_end-time_start,'ms')

利用键值对,key为机试座位号,value为准考证号加考试座位号。

  1. 成绩排名
import time
time_start=time.time()
     
n=int(input())
dic = {}
maxx = -1
minn = 100
for i in range(n):
    a,b,c=input().split()
    dic[int(c)] = a + ' ' + b
    if int(c) > maxx:
        maxx = int(c)
    if int(c)<minn:
        minn = int(c)
#print(maxx,minn)
print(dic[maxx])
print(dic[minn])

time_end=time.time()
print('time cost',time_end-time_start,'ms')
  1. 人口普查
import time
time_start=time.time()

import datetime as dt
from dateutil import rrule
youngest = dt.datetime.strptime('1814/9/6','%Y/%m/%d')
oldest = dt.datetime.strptime('2014/9/6','%Y/%m/%d')
young = oldest
old = youngest
n = int(input())
people = []
count = 0
for i in range(n):
    a = input().split()
    ls = [eval('x')for x in a]
    people.append(ls)
for i in range(n):
    date = dt.datetime.strptime(people[i][1],'%Y/%m/%d')
    if date>=old and date<=young:
        count += 1
        if date > youngest:
            youngest = date
            ynum = i
        if date < oldest:
            oldest = date
            onum = i
print(count,people[onum][0],people[ynum][0])

time_end=time.time()
print('time cost',time_end-time_start,'ms')

  1. 挖掘机技术哪家强
import time
time_start=time.time()

n = int(input())
cam = {}
maxx = 0
for i in range(n):
    a,b = map(int,input().split())
    if a in cam:
        cam[a] += b
    else:
        cam[a] = b
    if cam[a] > maxx:
        maxx = cam[a]
        num = a
#print(cam)
print(num,maxx)

time_end=time.time()
print('time cost',time_end-time_start,'ms')

用in来判断该编码下的学校之前是否有在字典中存入成绩,避免成绩被覆盖

  1. World Cup Betting
import time
time_start=time.time()

def change(x):
    if x == 0:
        return 'W'
    if x == 1:
        return 'T'
    if x == 2:
        return 'L'
m = []
max_i = []
for i in range(3):
    a,b,c = map(float,input().split())
    m.append([a,b,c])
for i in range(3):
    max_i.append(max(m[i]))
    print(change(m[i].index(max(m[i]))),end=' ')
print('%.2f'%((max_i[0]*max_i[1]*max_i[2]*0.65-1)*2))


time_end=time.time()
print('time cost',time_end-time_start,'ms')

  1. Sign In and Sign Out
import time
time_start=time.time()

n = int(input())
matrix = []
for i in range(n):
    item = input().split()
    m = [x for x in item]
    matrix.append(m)
arrive = matrix[0][1]
leave = matrix[0][2]
for i in range(n):
    if matrix[i][1] < arrive:
        arrive = matrix[i][1]
        earliest = i
    if matrix[i][2] > leave:
        leave = matrix[i][2]
        latest = i
print(matrix[earliest][0],matrix[latest][0])

time_end=time.time()
print('time cost',time_end-time_start,'ms')

python的时间比较大小可以直接用字符串比较

  1. Boys vs Girls
import time
time_start=time.time()

n = int(input())
matrix = []
Mlowest = 101
Fhighest = -1
countM = 0
countF = 0
for i in range(n):
    item = input().split()
    m = [x for x in item]
    matrix.append(m)
for i in range(n):
    grade = int(matrix[i][3])
    if matrix[i][1] == 'M':
        countM += 1
        if grade < Mlowest:
            Mlowest = grade
            ml = i
    else:
        countF += 1
        if grade > Fhighest:
            Fhighest = grade
            fh = i
if countF == 0:
    print('Absent')
else:
    print(matrix[fh][0],matrix[fh][2])

if countM == 0:
    print('Absent')
else:
    print(matrix[ml][0],matrix[ml][2])
        
if countF and countM:
    print(int(matrix[fh][3])-int(matrix[ml][3]))
else:
    print('NA')

time_end=time.time()
print('time cost',time_end-time_start,'ms')

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值