結果
問題 | No.5017 Tool-assisted Shooting |
ユーザー | miya145592 |
提出日時 | 2023-07-16 18:42:44 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 704 ms / 2,000 ms |
コード長 | 2,908 bytes |
コンパイル時間 | 464 ms |
コンパイル使用メモリ | 87,352 KB |
実行使用メモリ | 109,544 KB |
スコア | 3,149,739 |
平均クエリ数 | 924.60 |
最終ジャッジ日時 | 2023-07-16 18:44:35 |
合計ジャッジ時間 | 68,473 ms |
ジャッジサーバーID (参考情報) |
judge11 / judge12 |
純コード判定しない問題か言語 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 671 ms
108,212 KB |
testcase_01 | AC | 668 ms
108,348 KB |
testcase_02 | AC | 652 ms
107,960 KB |
testcase_03 | AC | 619 ms
107,908 KB |
testcase_04 | AC | 639 ms
107,820 KB |
testcase_05 | AC | 607 ms
108,580 KB |
testcase_06 | AC | 633 ms
107,760 KB |
testcase_07 | AC | 666 ms
108,584 KB |
testcase_08 | AC | 513 ms
106,476 KB |
testcase_09 | AC | 651 ms
108,396 KB |
testcase_10 | AC | 617 ms
108,460 KB |
testcase_11 | AC | 615 ms
107,576 KB |
testcase_12 | AC | 617 ms
107,372 KB |
testcase_13 | AC | 629 ms
108,308 KB |
testcase_14 | AC | 669 ms
108,712 KB |
testcase_15 | AC | 497 ms
106,976 KB |
testcase_16 | AC | 642 ms
108,864 KB |
testcase_17 | AC | 634 ms
108,052 KB |
testcase_18 | AC | 589 ms
107,928 KB |
testcase_19 | AC | 446 ms
105,664 KB |
testcase_20 | AC | 610 ms
107,584 KB |
testcase_21 | AC | 651 ms
106,848 KB |
testcase_22 | AC | 645 ms
107,964 KB |
testcase_23 | AC | 682 ms
108,920 KB |
testcase_24 | AC | 637 ms
108,132 KB |
testcase_25 | AC | 648 ms
107,812 KB |
testcase_26 | AC | 647 ms
109,316 KB |
testcase_27 | AC | 646 ms
107,336 KB |
testcase_28 | AC | 429 ms
106,240 KB |
testcase_29 | AC | 653 ms
107,516 KB |
testcase_30 | AC | 620 ms
108,464 KB |
testcase_31 | AC | 625 ms
108,256 KB |
testcase_32 | AC | 657 ms
107,888 KB |
testcase_33 | AC | 626 ms
108,284 KB |
testcase_34 | AC | 647 ms
108,460 KB |
testcase_35 | AC | 397 ms
106,196 KB |
testcase_36 | AC | 604 ms
107,952 KB |
testcase_37 | AC | 594 ms
108,776 KB |
testcase_38 | AC | 376 ms
105,616 KB |
testcase_39 | AC | 667 ms
107,920 KB |
testcase_40 | AC | 642 ms
107,340 KB |
testcase_41 | AC | 694 ms
107,384 KB |
testcase_42 | AC | 624 ms
107,596 KB |
testcase_43 | AC | 677 ms
109,544 KB |
testcase_44 | AC | 648 ms
107,408 KB |
testcase_45 | AC | 608 ms
109,000 KB |
testcase_46 | AC | 636 ms
108,364 KB |
testcase_47 | AC | 517 ms
107,380 KB |
testcase_48 | AC | 642 ms
108,568 KB |
testcase_49 | AC | 590 ms
107,780 KB |
testcase_50 | AC | 660 ms
108,024 KB |
testcase_51 | AC | 532 ms
106,816 KB |
testcase_52 | AC | 686 ms
108,132 KB |
testcase_53 | AC | 687 ms
108,068 KB |
testcase_54 | AC | 633 ms
108,100 KB |
testcase_55 | AC | 610 ms
108,096 KB |
testcase_56 | AC | 646 ms
107,672 KB |
testcase_57 | AC | 609 ms
107,724 KB |
testcase_58 | AC | 461 ms
106,596 KB |
testcase_59 | AC | 689 ms
109,368 KB |
testcase_60 | AC | 618 ms
107,760 KB |
testcase_61 | AC | 653 ms
107,580 KB |
testcase_62 | AC | 687 ms
108,580 KB |
testcase_63 | AC | 651 ms
108,616 KB |
testcase_64 | AC | 412 ms
105,704 KB |
testcase_65 | AC | 648 ms
107,704 KB |
testcase_66 | AC | 616 ms
108,440 KB |
testcase_67 | AC | 639 ms
108,656 KB |
testcase_68 | AC | 608 ms
108,004 KB |
testcase_69 | AC | 671 ms
108,472 KB |
testcase_70 | AC | 640 ms
108,312 KB |
testcase_71 | AC | 609 ms
108,036 KB |
testcase_72 | AC | 573 ms
106,852 KB |
testcase_73 | AC | 642 ms
107,956 KB |
testcase_74 | AC | 669 ms
108,976 KB |
testcase_75 | AC | 597 ms
107,056 KB |
testcase_76 | AC | 637 ms
109,108 KB |
testcase_77 | AC | 399 ms
106,732 KB |
testcase_78 | AC | 612 ms
107,084 KB |
testcase_79 | AC | 616 ms
108,896 KB |
testcase_80 | AC | 688 ms
109,320 KB |
testcase_81 | AC | 639 ms
108,344 KB |
testcase_82 | AC | 427 ms
106,156 KB |
testcase_83 | AC | 662 ms
108,268 KB |
testcase_84 | AC | 638 ms
108,840 KB |
testcase_85 | AC | 641 ms
108,108 KB |
testcase_86 | AC | 549 ms
106,968 KB |
testcase_87 | AC | 554 ms
108,468 KB |
testcase_88 | AC | 640 ms
106,944 KB |
testcase_89 | AC | 643 ms
109,244 KB |
testcase_90 | AC | 633 ms
108,608 KB |
testcase_91 | AC | 625 ms
109,124 KB |
testcase_92 | AC | 616 ms
109,352 KB |
testcase_93 | AC | 613 ms
108,352 KB |
testcase_94 | AC | 621 ms
107,564 KB |
testcase_95 | AC | 613 ms
107,612 KB |
testcase_96 | AC | 662 ms
107,876 KB |
testcase_97 | AC | 640 ms
108,888 KB |
testcase_98 | AC | 704 ms
108,432 KB |
testcase_99 | AC | 470 ms
106,832 KB |
ソースコード
from collections import deque import random import argparse parser = argparse.ArgumentParser() parser.add_argument('--local', action='store_true') args = parser.parse_args() if args.local: P = list(map(int, input().split())) D = [deque() for _ in range(25)] my_x = 12 my_lv = 1 my_p = 0 dir = ["S", "R", "L"] turn = 0 while turn<1000: N = int(input()) if N==-1: break HPX = [list(map(int, input().split())) for _ in range(N)] #敵を移動 for x in range(25): for i in range(len(D[x])): # y D[x][i][0] -= 1 if len(D[x])>0 and D[x][0][0]<0: D[x].popleft() #新たな敵 for h, p, x in HPX: D[x].append([59, h, p, h]) #自機の移動を決定 maxhp = 0 max_x = -1 for x1 in range(25): if len(D[x1])==0: continue y1, h1, p1, ini1 = D[x1][0] #破壊可能か? trn1 = h1//my_lv + (1 if h1%my_lv else 0) sa1 = (x1-my_x)%25 if sa1==0: pass elif sa1<=12: trn1+=(sa1-1) else: trn1+=(sa1-13) if y1-trn1<1: continue #破壊可能 tmp = (p1)/(trn1) if maxhp<tmp: maxhp = tmp max_x = x1 tmp_lv = 1 + (my_p+p1)//100 for x2 in range(25): if len(D[x2])==0: continue if x1==x2 and len(D[x2])<=1: continue i = 1 if x1==x2 else 0 y2, h2, p2, ini2 = D[x2][i] #破壊可能か? trn2 = h2//tmp_lv + (1 if h2%tmp_lv else 0) sa2 = (x2-x1)%25 if sa2==0: pass elif sa2<=12: trn2+=(sa2-1) else: trn2+=(sa2-13) if y2-trn1-trn2<1: continue #破壊可能 #tmp = p/h tmp = (p1+p2)/(trn1+trn2) if maxhp<tmp: maxhp = tmp max_x = x1 if max_x==-1: if my_x<12: d = 1 elif my_x>12: d = -1 else: d = 0 else: sa = (max_x-my_x)%25 if sa==0: d = 0 elif sa<=12: d = 1 else: d = -1 #移動先に敵がいるか? nx = (my_x+d)%25 lp = 0 while lp<3 and len(D[nx])>0 and D[nx][0][0]<=1: #移動先に敵がいる if d==0: d = 1 if random.randint(0, 1) else -1 else: d = 0 nx = (my_x+d)%25 lp+=1 #自機を移動 print(dir[d], flush=True) my_x = (my_x+d)%25 #攻撃 if len(D[my_x])>0: y, h, p, ini = D[my_x][0] D[my_x][0][1] -= my_lv if D[my_x][0][1]<=0: my_p += p my_lv = 1 + my_p//100 D[my_x].popleft() turn += 1