评测有误
查看原帖
评测有误
866613
sansesantongshun楼主2023/7/23 14:56

Python3代码

import re
days=('Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sunday')
names=[]
ps=[re.compile(x) for x in (r'^([A-Z]+): I am guilty.$',r'^([A-Z]+): I am not guilty.$',r'^([A-Z]+): ([A-Z]+) is guilty.$',r'^([A-Z]+): ([A-Z]+) is not guilty.$',r'^([A-Z]+): Today is ([A-Za-z]+).$')]
book={}
ans=set()
def lie(name,day,guilty):
    if not book[name]:
        return None
    for x in book[name]:
        if x[1]==1 and x[0]!=guilty:
            return True
        if x[1]==0 and x[0]==guilty:
            return True
        if x[1]==2 and x[0]!=day:
            return True
    return False
n,m,p=[int(x) for x in input().split(' ')]
for x in range(n):
    s=input()
    names.append(s)
for x in names:
    book[x]=[]
for x in range(p):
    s=input()
    results=[x.findall(s) for x in ps]
    if results[0]:
        book[results[0][0]].append((results[0][0],1))
    if results[1]:
        book[results[1][0]].append((results[1][0],0))
    if results[2]:
        book[results[2][0][0]].append((results[2][0][1],1))
    if results[3]:
        book[results[3][0][0]].append((results[3][0][1],0))
    if results[4]:
        book[results[4][0][0]].append((results[4][0][1],2))
for day in days:
    for guilty in names:
        minn=0
        maxn=0
        for name in names:
            k=lie(name,day,guilty)
            if k==True:
                minn+=1
                maxn+=1
            elif k==None:
                maxn+=1
        if minn<=m<=maxn:
            ans.add(guilty)
if len(ans)==1:
    print(tuple(ans)[0])
elif len(ans)==0:
    print('Impossible')
else:
    print('Cannot Determine')

测试点1,程序输出HELLO,正确答案HELLO,读到Cannot Determine

2023/7/23 14:56
加载中...