Submission #41831695
Source Code Expand
# debug = true debug = false A_TIME, SHIFT_A_TIME, CAPS_LOCK_TIME = gets.split.map(&:to_i) INPUT_BYTES = gets.chomp.bytes SMALL_BYTE, LARGE_BYTE = 'aA'.bytes dp = Array.new(2) { [] } dp[0] << 0 dp[1] << CAPS_LOCK_TIME # CapsLockが偶数回、大文字小文字がこちら側の意味 EVEN_THIS_SIDE = [A_TIME, CAPS_LOCK_TIME + SHIFT_A_TIME + CAPS_LOCK_TIME].min # CapsLockが偶数回、大文字小文字があちら側の意味 EVEN_OTHER_SIDE = [SHIFT_A_TIME, CAPS_LOCK_TIME + A_TIME + CAPS_LOCK_TIME].min # CapsLockが奇数回、大文字小文字がどちらでも良いの意味 ODD_ANY_SIDE = [A_TIME + CAPS_LOCK_TIME, SHIFT_A_TIME + CAPS_LOCK_TIME].min p [EVEN_THIS_SIDE, EVEN_OTHER_SIDE, ODD_ANY_SIDE] if debug INPUT_BYTES.each_with_index do |byte, i| if byte == SMALL_BYTE dp[0] << [dp[0][i] + EVEN_THIS_SIDE, dp[1][i] + ODD_ANY_SIDE].min dp[1] << [dp[1][i] + EVEN_OTHER_SIDE, dp[0][i] + ODD_ANY_SIDE].min else dp[0] << [dp[0][i] + EVEN_OTHER_SIDE, dp[1][i] + ODD_ANY_SIDE].min dp[1] << [dp[1][i] + EVEN_THIS_SIDE, dp[0][i] + ODD_ANY_SIDE].min end end p dp if debug puts [dp[0][-1], dp[1][-1]].min __END__ dp[0][j+1] = [dp[0][j] + x, dp[1][j] + z + x].min # ここがdp[1][j] + z + yになってしまっている dp[1][j+1] = [dp[0][j] + z + y, dp[1][j] + y].min # ここもdp[1][j] + xではaではなくAが出力されてしまう。 # とした後に、 dp[0][j+1] = min(dp[0][j+1], dp[1][j+1] + z) dp[1][j+1] = min(dp[1][j+1], dp[0][j+1] + z) dp[0][j+1] = dp[0][j] + x dp[1][j+1] = dp[1][j] + y # とした後に、 dp[0][j+1] = min(dp[0][j+1], dp[1][j+1] + z) dp[1][j+1] = min(dp[1][j+1], dp[0][j+1] + z)
Submission Info
Submission Time | |
---|---|
Task | D - Shift vs. CapsLock |
User | HalMat |
Language | Ruby (2.7.1) |
Score | 400 |
Code Size | 1696 Byte |
Status | AC |
Exec Time | 123 ms |
Memory | 22028 KiB |
Judge Result
Set Name | Sample | All | ||||
---|---|---|---|---|---|---|
Score / Max Score | 0 / 0 | 400 / 400 | ||||
Status |
|
|
Set Name | Test Cases |
---|---|
Sample | 00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt |
All | 00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt, 01_small_00.txt, 01_small_01.txt, 01_small_02.txt, 01_small_03.txt, 01_small_04.txt, 01_small_05.txt, 01_small_06.txt, 01_small_07.txt, 01_small_08.txt, 01_small_09.txt, 02_rnd_00.txt, 02_rnd_01.txt, 02_rnd_02.txt, 02_rnd_03.txt, 02_rnd_04.txt, 02_rnd_05.txt, 02_rnd_06.txt, 02_rnd_07.txt, 02_rnd_08.txt, 02_rnd_09.txt, 03_max_00.txt, 03_max_01.txt, 03_max_02.txt, 03_max_03.txt, 04_border_00.txt, 04_border_01.txt, 04_border_02.txt, 04_border_03.txt |
Case Name | Status | Exec Time | Memory |
---|---|---|---|
00_sample_00.txt | AC | 59 ms | 14024 KiB |
00_sample_01.txt | AC | 57 ms | 14104 KiB |
00_sample_02.txt | AC | 60 ms | 14136 KiB |
01_small_00.txt | AC | 58 ms | 14096 KiB |
01_small_01.txt | AC | 59 ms | 14100 KiB |
01_small_02.txt | AC | 57 ms | 14244 KiB |
01_small_03.txt | AC | 58 ms | 14028 KiB |
01_small_04.txt | AC | 55 ms | 14104 KiB |
01_small_05.txt | AC | 56 ms | 14164 KiB |
01_small_06.txt | AC | 58 ms | 14280 KiB |
01_small_07.txt | AC | 55 ms | 14248 KiB |
01_small_08.txt | AC | 56 ms | 13984 KiB |
01_small_09.txt | AC | 54 ms | 14076 KiB |
02_rnd_00.txt | AC | 120 ms | 21868 KiB |
02_rnd_01.txt | AC | 114 ms | 21068 KiB |
02_rnd_02.txt | AC | 113 ms | 20808 KiB |
02_rnd_03.txt | AC | 103 ms | 19596 KiB |
02_rnd_04.txt | AC | 103 ms | 19884 KiB |
02_rnd_05.txt | AC | 100 ms | 19296 KiB |
02_rnd_06.txt | AC | 107 ms | 19972 KiB |
02_rnd_07.txt | AC | 92 ms | 18524 KiB |
02_rnd_08.txt | AC | 111 ms | 20744 KiB |
02_rnd_09.txt | AC | 92 ms | 18316 KiB |
03_max_00.txt | AC | 118 ms | 22028 KiB |
03_max_01.txt | AC | 121 ms | 21736 KiB |
03_max_02.txt | AC | 121 ms | 21940 KiB |
03_max_03.txt | AC | 117 ms | 21936 KiB |
04_border_00.txt | AC | 116 ms | 21936 KiB |
04_border_01.txt | AC | 122 ms | 22020 KiB |
04_border_02.txt | AC | 123 ms | 21740 KiB |
04_border_03.txt | AC | 122 ms | 21880 KiB |