結果
| 問題 |
No.5003 物理好きクリッカー
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2018-12-10 03:22:28 |
| 言語 | Python3 (3.13.1 + numpy 2.2.1 + scipy 1.14.1) |
| 結果 |
AC
|
| 実行時間 | 138 ms / 10,000 ms |
| コード長 | 2,964 bytes |
| コンパイル時間 | 222 ms |
| 実行使用メモリ | 22,956 KB |
| スコア | 38,202,073,652 |
| 平均クエリ数 | 10000.00 |
| 最終ジャッジ日時 | 2021-07-19 09:17:55 |
| 合計ジャッジ時間 | 7,078 ms |
|
ジャッジサーバーID (参考情報) |
judge11 / judge14 |
| 純コード判定しない問題か言語 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 32 |
ソースコード
import math
n = int(input())
s = input()
fac_power = {"enhclick":1,
"hand":1,
"lily":10,
"factory":120,
"casino":2000,
"grimoire":25000}
buy_count = {"enhclick":0,
"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.5
turn = 0
cookie_count = 10000
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 *= CLICK_RATIO
if score < ev:
act, price, score = k, v, ev
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"]
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