結果
| 問題 |
No.5017 Tool-assisted Shooting
|
| ユーザー |
titia
|
| 提出日時 | 2023-07-16 16:31:14 |
| 言語 | Python3 (3.13.1 + numpy 2.2.1 + scipy 1.14.1) |
| 結果 |
AC
|
| 実行時間 | 138 ms / 2,000 ms |
| コード長 | 1,740 bytes |
| コンパイル時間 | 181 ms |
| コンパイル使用メモリ | 10,928 KB |
| 実行使用メモリ | 24,492 KB |
| スコア | 1,836,158 |
| 平均クエリ数 | 933.34 |
| 最終ジャッジ日時 | 2023-07-16 16:31:32 |
| 合計ジャッジ時間 | 16,468 ms |
|
ジャッジサーバーID (参考情報) |
judge14 / judge12 |
| 純コード判定しない問題か言語 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 100 |
ソースコード
import sys
input = sys.stdin.readline
# 次の敵を倒したときの、(耐久力+パワー)/ターン数
# が最大になる行動を貪欲に選ぶ。
SUM=0
XS=[[] for i in range(25)]
ji=12
for tests in range(1000):
n=int(input())
if n==-1:
break
for i in range(n):
h,p,x=map(int,input().split())
XS[x].append([h,h,p,59]) # 初期耐久, 現在の耐久, パワー, 現在の座標
attack=1+SUM//100
best=0
ind="S"
if XS[ji]==[]:
pass
else:
h1,h2,p,za=XS[ji][0]
turn=(h2+attack-1)//attack
if za>=turn:
best=(h1+p)/turn
elif za==1:
ind="L"
if XS[(ji-1)%25] and XS[(ji-1)%25][0][-1]>1:
for i in range(1,11):
if XS[(ji-i)%25]==[]:
continue
h1,h2,p,za=XS[(ji-i)%25][0]
turn=(h2+attack-1)//attack+i
if za>=turn and best<(h1+p)/turn:
best=(h1+p)/turn
ind="L"
if XS[(ji+1)%25] and XS[(ji+1)%25][0][-1]>1:
for i in range(1,11):
if XS[(ji+i)%25]==[]:
continue
h1,h2,p,za=XS[(ji+i)%25][0]
turn=(h2+attack-1)//attack+i
if za>=turn and best<(h1+p)/turn:
best=(h1+p)/turn
ind="R"
print(ind,flush=True)
if ind=="L":
ji=(ji-1)%25
elif ind=="R":
ji=(ji+1)%25
if XS[ji]==[]:
pass
else:
XS[ji][0][1]-=attack
if XS[ji][0][1]<=0:
SUM+=XS[ji][0][2]
XS[ji].pop(0)
for i in range(25):
for j in range(len(XS[i])):
XS[i][j][-1]-=1
if XS[i] and XS[i][0][-1]<0:
XS[i].pop(0)
titia