Python3.0 P7426TLE求调
查看原帖
Python3.0 P7426TLE求调
1037637
Akabane_Karuma楼主2023/9/28 21:31

时间复杂度O(nm)炸了,求调

def day(s):
    month = int(s[4:6])
    date = int(s[6:])
    if month > 1:
        date += 31
    if month > 2:
        date += 28
    if month > 3:
        date += 31
    if month > 4:
        date += 30
    if month > 5:
        date += 31
    if month > 6:
        date += 30
    if month > 7:
        date += 31
    if month > 8:
        date += 31
    if month > 9:
        date += 30
    if month > 10:
        date += 31
    if month > 11:
        date += 30
    return date*86400


def second(s):
    return int(s[:2])*3600+int(s[3:5])*60+int(s[6:])


def result(s):
    index = list(s).index("'")
    return int(s[:index])*60+int(s[index+1:len(s)-1])


def run(time, s):
    if s == 'M':
        if time <= 750:
            return 20
        if time <= 780:
            return 18
        if time <= 810:
            return 16
        if time <= 840:
            return 14
        if time <= 870:
            return 12
        if time <= 910:
            return 10
        if time <= 950:
            return 8
        if time <= 990:
            return 6
        if time <= 1030:
            return 4
        if time <= 1080:
            return 2
        else:
            return 0
    else:
        if time <= 400:
            return 20
        if time <= 417:
            return 18
        if time <= 434:
            return 16
        if time <= 451:
            return 14
        if time <= 470:
            return 12
        if time <= 485:
            return 10
        if time <= 500:
            return 8
        if time <= 515:
            return 6
        if time <= 530:
            return 4
        if time <= 540:
            return 2
        else:
            return 0


def sun(x):
    if x >= 21:
        return 10
    if x >= 19:
        return 9
    if x >= 17:
        return 8
    if x >= 14:
        return 7
    if x >= 11:
        return 6
    if x >= 7:
        return 4
    if x >= 3:
        return 2
    else:
        return 0


def plan(x):
    if x >= 18:
        return 5
    if x >= 15:
        return 4
    if x >= 12:
        return 3
    if x >= 9:
        return 2
    if x >= 6:
        return 1
    else:
        return 0


information = []
n = int(input())
sunny = [[] for i in range(n)]
for i in range(n):
    inp = input().split()
    information.append([int(inp[0]), inp[1], int(inp[2]), result(inp[3]), inp[4], int(inp[5]), int(inp[6])])
    # 0:学号
    # 1:性别
    # 2:专项成绩
    # 3:长跑成绩(秒)
    # 4:体质测试
    # 5:大一专项期末检测成绩
    # 6:班级训练营
    # 7:阳光赛跑
m = int(input())
for i in range(m):
    inp = input().split()
    number = int(inp[1])
    u = 0
    for j in range(n):
        if information[j][0] == number:
            u = j
            break
    sunny[u].append([day(inp[0]), number, second(inp[2]), second(inp[3]),
                     float(inp[4])*1000, result(inp[5]), int(inp[6])])
for i in range(n):
    last = -21600
    cnt = 0
    for j in sunny[i]:
        if information[i][1] == 'F':
            if j[4] < 1500:
                continue
        else:
            if j[4] < 3000:
                continue
        if not 2 <= j[4]/(j[3]-j[2]) <= 5:
            continue
        if j[5] > 270:
            continue
        if j[4]/j[6] > 1.5:
            continue
        if j[0]+j[2]-last < 21600:
            continue
        last = j[0]+j[3]
        cnt += 1
    information[i].append(cnt)
for i in information:  # i[2]为总成绩
    i[2] += run(i[3], i[1])
    i[2] += sun(i[7])
    if i[4] == 'P':
        i[2] += 10
    i[2] += i[5]
    i[2] += plan(i[6]+i[7])
    if i[2] >= 95:
        level = 'A'
    elif i[2] >= 90:
        level = 'A-'
    elif i[2] >= 85:
        level = 'B+'
    elif i[2] >= 80:
        level = 'B'
    elif i[2] >= 77:
        level = 'B-'
    elif i[2] >= 73:
        level = 'C+'
    elif i[2] >= 70:
        level = 'C'
    elif i[2] >= 67:
        level = 'C-'
    elif i[2] >= 63:
        level = 'D+'
    elif i[2] >= 60:
        level = 'D'
    else:
        level = 'F'
    print('%d %d %s' % (i[0], i[2], level))

2023/9/28 21:31
加载中...