这道题其实就是将其文字内容翻译成代码,从具体实现方法开始一句一句翻译就ok
Python代码
N,Tdef,Tmax,Tmin,H=list(input().split())
N,Tdef,Tmax,Tmin=list(map(int,[N,Tdef,Tmax,Tmin]))
n=int(input())
k=0
def update(tc):
for i in range(1,N+1):
if IP[i][1]>0 and IP[i][1]<=tc:#有过期时间和已过期
if IP[i][0]==1:
IP[i][0]=0
IP[i][2]=''
IP[i][1]=0
else:
IP[i][0]=3
IP[i][1]=0
def StateGetIp(state):
for i in range(1,N+1):
if IP[i][0]==state:
return i
return 0
def ClientGetIp(client):
for i in range(1,N+1):
if IP[i][2]==client:
return i
return 0
IP={
}
for i in range(1,N+1):
IP[i]=[0,0,'']#第0个是状态,第1个是过期时间,第2个是占用者
#0:未分配 1:待分配 2:占用 3:过期
for i in range(n):
tc,client,server,ty,ip,te=list(input().split())
tc,ip,te=list(map(int,[tc,ip,te]))
if server!=H and server!='*':
if ty!='REQ':
continue
if ty!='DIS' and ty!='REQ':
continue
if server=='*' and ty!='DIS' or server==H and ty=='DIS':
continue
update(tc)
if ty=='DIS':
k=ClientGetIp(client)
if k==0:
k=StateGetIp(0)
if k==0:
k=StateGetIp(3)
if k==0:
continue
IP[k][0]=1
IP[k][2]=client
if te==0:
IP[k][1]=tc+Tdef
else:
if Tmin<=te-tc<=Tmax:
IP[k]</