[0822]美团笔试(字符匹配+配送订单+货物搬运+区域开会
第一题,AC,有个坑是strip()
import re
def judge(s):
if not s: return False
if len(s) > 20: return False
# 判断首字母是否为字母
if not s[0].isalpha(): return False
# 判断字符串是否由字母和数字组成
if not s.isalnum(): return False
# 判断是否含有数字
numMatch = re.compile('[0-9]')
if not numMatch.search(s): return False
return True
T = int(input())
for _ in range(T):
s = input().strip() # 这里要strip,大坑耽误不少时间
if judge(s):
print('Accept')
else:
print('Wrong') 第二题,AC,优先队列
from functools import total_ordering
import heapq
@total_ordering
class order:
def __init__(self, index, v, w):
self.index = index
self.get = (v + w * 2)* -1
def __eq__(self,other):
if self.index==other.index: return True
def __gt__(self,other):
if self.get>other.get: return True
elif self.get<other.get: return False
else:
if self.index>other.index: return True
elif self.index<other.index:
return False
n, m = map(int, input().split())
heap = []
for i in range(n):
v, w = map(int, input().split())
heapq.heappush(heap,order(i + 1, v, w))
res = []
for i in range(m):
curr=heapq.heappop(heap)
res.append(curr.index)
res.sort() # 这里有个坑…需要排序…要把结果index按字典序输出……
print(' '.join(map(str, res))) 第三题,64%…复杂度比较高超时
class goods: def __init__(self,l,r,s): self.l,self.r,self.s=l,r,s n=int(input()) w=list(map(int,input().split())) take=map(int,input().split()) S=[0 for _ in range(n+1)] for i in range(1,n+1): S[i]=S[i-1]+w[i-1] del w start=goods(1,n,S[n]) temp=set() t=goods(0,0,0) temp.add(start) temp.add(t) for i in take: for j in temp: if i>=j.l and i<=j.r: curr=j temp.remove(curr) if curr.l<i: temp.add(goods(curr.l,i-1,S[i-1]-S[curr.l-1])) if curr.r>i: temp.add(goods(i+1,curr.r,S[curr.r]-S[i])) break MAX=max(temp,key=lambda x: x.s) print(MAX.s)
第四题,18%……不知道哪里出了什么问题,用的dfs+回溯
查看12道真题和解析