結果

問題 No.453 製薬会社
ユーザー ヒッキープログラミングするスレ GitHub ガチ
提出日時 2016-12-04 05:06:11
言語 Python3
(3.13.1 + numpy 2.2.1 + scipy 1.14.1)
結果
AC  
実行時間 36 ms / 2,000 ms
コード長 1,426 bytes
コンパイル時間 77 ms
コンパイル使用メモリ 12,672 KB
実行使用メモリ 11,520 KB
最終ジャッジ日時 2024-11-27 19:38:21
合計ジャッジ時間 1,246 ms
ジャッジサーバーID
(参考情報)
judge5 / judge2
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 4
other AC * 9
権限があれば一括ダウンロードができます

ソースコード

diff #

from fractions import Fraction

C, D = input().split()

b = [False , False, False, True, True]
s = []
# Simplex Algorithm
#     base,               X1,              X2,          X3,          X4,     constant 
s.append([3,  Fraction(3, 4),  Fraction(2, 7), Fraction(1), Fraction(0), Fraction(C)])
s.append([4,  Fraction(1, 4),  Fraction(5, 7), Fraction(0), Fraction(1), Fraction(D)])
s.append([0, Fraction(-1000), Fraction(-2000), Fraction(0), Fraction(0), Fraction(0)])

def base():
    x = -1
    for i in range(1, 5):
        if b[i]:
            continue
        elif s[2][i] < 0:
            if x < 0:
                x = i
            elif s[2][i] < s[2][x]:
                x = i
    return x        

while base() >= 0:
    xb = base()
    b[xb] = True
    u = s[0][5] / s[0][xb]
    v = s[1][5] / s[1][xb]
    if u < v:
        b[s[0][0]] = False
        s[0][0] = xb
        t = s[0][xb]
        for i in range(1, 6):
            s[0][i] /= t
        for j in range(1, 3):
            t = s[j][xb]
            for i in range(1, 6):
                s[j][i] -= t * s[0][i]
    else:
        b[s[1][0]] = False
        s[1][0] = xb
        t = s[1][xb]
        for i in range(1, 6):
            s[1][i] /= t
        for j in range(0, 3):
            if j != 1:
                t = s[j][xb]
                for i in range(1, 6):
                    s[j][i] -= t * s[1][i]
    
# print(s)

ans = float(s[2][5])

print(ans)
0