結果

問題 No.5003 物理好きクリッカー
ユーザー morumottomorumotto
提出日時 2018-12-10 03:41:40
言語 Python3
(3.12.2 + numpy 1.26.4 + scipy 1.12.0)
結果
AC  
実行時間 124 ms / 10,000 ms
コード長 3,121 bytes
コンパイル時間 56 ms
実行使用メモリ 22,940 KB
スコア 23,199,793,729
平均クエリ数 10002.00
最終ジャッジ日時 2021-07-19 09:17:54
合計ジャッジ時間 6,375 ms
ジャッジサーバーID
(参考情報)
judge15 / judge11
純コード判定しない問題か言語
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 122 ms
22,520 KB
testcase_01 AC 120 ms
22,408 KB
testcase_02 AC 117 ms
22,500 KB
testcase_03 AC 116 ms
22,532 KB
testcase_04 AC 120 ms
22,608 KB
testcase_05 AC 120 ms
22,340 KB
testcase_06 AC 118 ms
22,424 KB
testcase_07 AC 118 ms
22,796 KB
testcase_08 AC 123 ms
22,732 KB
testcase_09 AC 117 ms
22,764 KB
testcase_10 AC 120 ms
22,804 KB
testcase_11 AC 119 ms
22,664 KB
testcase_12 AC 120 ms
22,600 KB
testcase_13 AC 118 ms
22,844 KB
testcase_14 AC 123 ms
22,736 KB
testcase_15 AC 124 ms
22,716 KB
testcase_16 AC 119 ms
22,340 KB
testcase_17 AC 116 ms
22,768 KB
testcase_18 AC 120 ms
22,492 KB
testcase_19 AC 118 ms
22,532 KB
testcase_20 AC 120 ms
22,740 KB
testcase_21 AC 118 ms
22,656 KB
testcase_22 AC 119 ms
22,780 KB
testcase_23 AC 119 ms
22,764 KB
testcase_24 AC 118 ms
22,808 KB
testcase_25 AC 118 ms
22,756 KB
testcase_26 AC 116 ms
22,792 KB
testcase_27 AC 120 ms
22,568 KB
testcase_28 AC 121 ms
22,496 KB
testcase_29 AC 117 ms
22,464 KB
testcase_30 AC 117 ms
22,476 KB
testcase_31 AC 120 ms
22,504 KB
権限があれば一括ダウンロードができます

ソースコード

diff #

import math
n = int(input())
s = input()
fac_power = {"enhclick":1,
             "hand":1,
             "lily":10,
             "factory":120,
             "casino":2000,
             "grimoire":25000}
buy_count = {"enhclick":1,
             "hand":0,
             "lily":0,
             "factory":0,
             "casino":0,
             "grimoire":0}
buy_price = {"buy hand":150,
             "buy lily":2000,
             "buy factory":30000,
             "buy casino":600000,
             "buy grimoire":10000000}
rei_price = {"enhclick":15,
             "reinforce hand":1500,
             "reinforce lily":20000,
             "reinforce factory":300000,
             "reinforce casino":6000000,
             "reinforce grimoire":100000000}
sell_price = {"sell hand":[],
              "sell lily":[],
              "sell factory":[],
              "sell casino":[],
              "sell grimoire":[]}
fac_names = {"hand", "lily", "factory", "casino", "grimoire"}

CLICK_RATIO = 0.977
turn = 0
click_count = 0
click_adition = 0
cookie_count = 0
fever = 0
sale = False
while turn < n:
  #print(cookie_count)
  #------------- player_action -------------
  act = None
  price = 0
  score = 0
  #buy
  for k, v in buy_price.items():
    if sale:
      v *= 0.9
    if cookie_count >= v:
      ev = fac_power[k.split()[-1]] * (n - turn) - v
      #print(ev)
      if score < ev:
        act, price, score = k, v, ev
  #reinforce
  for k, v in rei_price.items():
    if sale:
      v *= 0.9
    if cookie_count >= v:
      ev = fac_power[k.split()[-1]] * buy_count[k.split()[-1]] * (n - turn) - v
      #print(ev)
      if k == "enhclick":
        ev = (ev + v) * CLICK_RATIO - v
      if score < ev:
        act, price, score = k, v, ev
  #sell
  for k, v in sell_price.items():
    if not v:continue
    ev =  v[-1] - fac_power[k.split()[-1]] * (n - turn)
    #print(ev)
    if score < ev:
      act, price, score = "sell " + k.split()[-1], - math.ceil(v[-1] * 0.25), ev

  if act == None:
    print("click")
    cookie_count += fac_power["enhclick"]
    click_adition += fac_power["enhclick"]
    click_count += 1
  else:
    if act in buy_price:
      print(act)
      sell_price["sell "+ act.split()[-1]].append(math.ceil(buy_price[act] * 0.25))
      buy_price[act] = math.ceil(buy_price[act] * 1.2)
      buy_count[act.split()[-1]] += 1
      cookie_count -= math.ceil(price)
    elif act in rei_price:
      print(act)
      rei_price[act] *= 10
      fac_power[act.split()[-1]] *= 2
      cookie_count -= math.ceil(price)
    elif act in sell_price:
      print(act)
      cookie_count += sell_price[act].pop()
      buy_count[act.split()[-1]] -= 1


  #------------- facility_action -----------
  add = sum([fac_power[k] * buy_count[k] for k in fac_names])
  if fever:
    add *= 7
    fever -= 1
  cookie_count += add

  #------------- special_action ------------
  special_act = s[turn]
  if s == "B":
    cookie_count += math.ceil(cookie_count / 100)
  elif s == "F":
    fever = 20
  elif s == "S":
    sale = True

  #------------- turn++ ------------------
  turn += 1
print(cookie_count)
print(click_count)
0