結果

問題 No.2927 Reverse Polish Equation
ユーザー VvyLwVvyLw
提出日時 2024-10-14 20:43:05
言語 Python3
(3.12.2 + numpy 1.26.4 + scipy 1.12.0)
結果
TLE  
実行時間 -
コード長 1,892 bytes
コンパイル時間 116 ms
コンパイル使用メモリ 12,544 KB
実行使用メモリ 65,860 KB
最終ジャッジ日時 2024-10-16 00:34:24
合計ジャッジ時間 6,734 ms
ジャッジサーバーID
(参考情報)
judge2 / judge3
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 TLE -
testcase_01 -- -
testcase_02 -- -
testcase_03 -- -
testcase_04 -- -
testcase_05 -- -
testcase_06 -- -
testcase_07 -- -
testcase_08 -- -
testcase_09 -- -
testcase_10 -- -
testcase_11 -- -
testcase_12 -- -
testcase_13 -- -
testcase_14 -- -
testcase_15 -- -
testcase_16 -- -
testcase_17 -- -
testcase_18 -- -
testcase_19 -- -
testcase_20 -- -
testcase_21 -- -
testcase_22 -- -
testcase_23 -- -
testcase_24 -- -
testcase_25 -- -
testcase_26 -- -
testcase_27 -- -
testcase_28 -- -
testcase_29 -- -
testcase_30 -- -
testcase_31 -- -
testcase_32 -- -
testcase_33 -- -
testcase_34 -- -
testcase_35 -- -
testcase_36 -- -
testcase_37 -- -
testcase_38 -- -
testcase_39 -- -
testcase_40 -- -
testcase_41 -- -
testcase_42 -- -
testcase_43 -- -
testcase_44 -- -
testcase_45 -- -
権限があれば一括ダウンロードができます

ソースコード

diff #

# evalが悪いだけ説ある
# そもそも線形計画でmin, maxが使えないよという話(ぐぬぬ)
# from pulp import LpProblem, LpVariable, LpInteger, LpMinimize, value, PULP_CBC_CMD
# _,y=map(int,input().split())
# s=list(input().split())
# prob=LpProblem(sense=LpMinimize)
# x=LpVariable('x',lowBound=0,cat=LpInteger)
# sk=[]
# op = {'+': lambda x,y: x+y,
#       'max': lambda x,y: max(x,y),
#       'min': lambda x,y: min(x,y)}
# for t in s:
#     if t in op:
#         b,a=sk.pop(),sk.pop()
#         sk.append(op[t](a,b))
#     else: sk.append(x if t=="X" else int(t))
# prob+=sk[0]==y
# prob.solve(PULP_CBC_CMD(msg=False))
# print(int(value(x)) if prob.status==1 else -1)

# 非線形計画だと厳密な整数解は出しにくいよという話(ぐぬぬ)
# ワンチャンいけるかも
from scipy.optimize import minimize
_,y=map(int,input().split())
s=list(input().split())
def f(x):
    sk=[]
    op = {'+': lambda x,y: x+y,
          'max': lambda x,y: max(x,y),
          'min': lambda x,y: min(x,y)}
    for t in s:
        if t in op:
            b,a=sk.pop(),sk.pop()
            sk.append(op[t](a,b))
        else: sk.append(x if t=="X" else int(t))
    return sk[0]
def g(x): return abs(f(x[0])-y)
ret=minimize(g,x0=[0],method='Nelder-Mead')
apx=int(ret.x[0])
if f(apx)==y: print(apx)
else: print(-1)

# ニア、僕の勝ちだ
# _,y=map(int,input().split())
# s=list(input().split())
# def f(x):
#     sk=[]
#     op={'+': lambda x,y: x+y,
#         'max': lambda x,y: max(x,y),
#         'min': lambda x,y: min(x,y)}
#     for t in s:
#         if t in op:
#             b,a=sk.pop(),sk.pop()
#             sk.append(op[t](a,b))
#         else: sk.append(x if t=="X" else int(t))
#     return sk[0]
# ok,ng=(1<<61)-1,-1
# while abs(ok-ng)>1:
#     x=(ok+ng)//2
#     # print(x, f(x))
#     if f(x)>=y: ok=x
#     else: ng=x
# print(ok if f(ok)==y else -1)
0