题解 | 三角谜题

三角谜题

https://www.nowcoder.com/practice/b3545e9409cd4a39a09a4629003d2293

import sys
import math
# 计算底为d,腰为y的等腰三角形的面积
def calS(y,d):
    S = d * 0.5 * math.sqrt(y * y - d * d * 0.25)
    return S
# 要固定底边找最大合法腰,不能固定腰找底(面积非单调)
def judgeS(ston):
    max_area = 0
    ston_y = [x for x in ston if x[1]>=2]

    for ls2 in ston:
        d , cnt_d = ls2           
        for ls1 in ston_y:
            y, cnt_y = ls1
            if d >= 2*y:
                continue
            if d!=y or (d==y and cnt_d>2):
                S = calS(y,d)
                max_area = S if S>max_area else max_area 
                break                 
    return max_area

# print(calS(6,5))
data = list(map(int,sys.stdin.read().split()))
T = data[0]
ptr = 1
for i in range(T):
    n = data[ptr]
    ston = {}
    ptr+=1
    for j in range(n):
        lj = data[ptr]
        ptr+=1
        aj = data[ptr]
        ptr+=1
        ston[lj]=ston.get(lj, 0) + aj

    ston = sorted(ston.items(),key = lambda x:-x[0])
    
    # print(ston_y)
    res = judgeS(ston)
    if res:
        print(res)
    else:
        print('-1')



要固定底边找最大合法腰,不能固定腰找底(面积非单调)

全部评论

相关推荐

LuminousZJ:不行,最后还是要看学信网的,这点不能伪装,也骗不过人家,得不偿失
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务