結果
問題 |
No.1924 3 color painting on a line
|
ユーザー |
![]() |
提出日時 | 2025-05-14 13:10:53 |
言語 | PyPy3 (7.3.15) |
結果 |
WA
|
実行時間 | - |
コード長 | 2,487 bytes |
コンパイル時間 | 191 ms |
コンパイル使用メモリ | 82,316 KB |
実行使用メモリ | 70,772 KB |
最終ジャッジ日時 | 2025-05-14 13:12:13 |
合計ジャッジ時間 | 3,463 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 2 WA * 41 |
ソースコード
import sys # Use fast IO input = sys.stdin.readline def solve(): # Read input N and string S n = int(input()) s = input().strip() # The problem constraints state N >= 1, so we don't need to handle N=0 explicitly. # If N=0 were possible, the answer would be 0 operations. # Initialize counts for blocks of each color nr = 0 # Number of Red blocks ng = 0 # Number of Green blocks nb = 0 # Number of Blue blocks # We need to count the number of maximal contiguous blocks of each color. # We can iterate through the string and increment the count whenever a new block starts. if n > 0: # Handle the first character to initialize the count for the first block first_char = s[0] if first_char == 'R': nr = 1 elif first_char == 'G': ng = 1 else: # 'B' nb = 1 # Iterate from the second character (index 1) up to N-1 for i in range(1, n): # A new block starts if the current character is different from the previous one if s[i] != s[i-1]: # Identify the color of the new block and increment its count current_char = s[i] if current_char == 'R': nr += 1 elif current_char == 'G': ng += 1 else: # 'B' nb += 1 # Now we apply the strategy: Choose a base color, paint everything with it (1 op), # then paint over the blocks that have a different target color. # The total operations for a base color C is 1 + (sum of block counts for colors != C). # Calculate the cost if Red is chosen as the base color. # Need 1 op for base coat + ops for Green blocks + ops for Blue blocks. costR = 1 + ng + nb # Calculate the cost if Green is chosen as the base color. # Need 1 op for base coat + ops for Red blocks + ops for Blue blocks. costG = 1 + nr + nb # Calculate the cost if Blue is chosen as the base color. # Need 1 op for base coat + ops for Red blocks + ops for Green blocks. costB = 1 + nr + ng # The minimum number of operations required is the minimum cost among the three possible base color strategies. # The `min` function handles cases where one or two colors might not be present (their counts would be 0). print(min(costR, costG, costB)) # Call the solve function to run the logic solve()