ABC225、コンテスト7回目の挑戦です!
泥臭い方法ではありますが、C問題まで完答できました!
C問題解いて、レートが+40くらいなので、あと5, 6 回C問題完答できたら、茶色突入ってところか。(希望的観測)
S=input()
#3文字の中に、同じ種類の文字が何種類あるかで場合分け
if len(set(S))==3:
print(6)
elif len(set(S))==2:
print(3)
else:
print(1)
本当は、M種類同じ文字があると、3!/M!だが、そのまま数字書いてしまった。次から気をつける。
N=int(input())
#スターである条件は、すべてのa_bのどちらかに同じ数字が出現すること。
#リストを区切らずに格納して、数を数える。
a_b_list=[]
for i in range(N-1):
a, b=map(int, input().split())
a_b_list.append(a)
a_b_list.append(b)
# print(a_b_list)
from collections import Counter
# print(Counter(a_b_list).keys())
# print(Counter(a_b_list).values())
if max(Counter(a_b_list).values())==N-1:
print('Yes')
else:
print('No')
a,b のすべてに、1回ずつ、計N-1回同じ数字が登場した場合に、スターとなる。
N, M=map(int, input().split())
matrix=[]
for i in range(N):
B=[]
B=list(map(int, input().split()))
matrix.append(B)
# print(matrix)
#各種条件の一致を確かめる
Flag='Yes' #初期化、Aと一致するかどうか
#1) 列の次の要素は、1ずつの連続した数である。
for i in range(N):
for j in range(M-1):
if matrix[i][j]+1==matrix[i][j+1]:
pass
else:
Flag='No'
break
# print(Flag)
#2) 同じ列の次の行は、前の行の要素に7を足したものである。
for i in range(N-1):
if matrix[i][0]+7==matrix[i+1][0]:
pass
else:
Flag='No'
break
# print(Flag)
a=matrix[0][0] #先頭の要素
#3) Mの数による条件
if M==1:
pass
else:
if a%7 in [_ for _ in range(1, 9-M)]:
pass
else:
Flag='No'
print(Flag)
Aの行列は、
1 2 3 4 5 6 7
8 9 10 11 12 13 14
...
と続く、カレンダー形式の行列となっている。
与えられた行列Bが、Aの一部になっているかどうかを判定する問題。
スマートな方法がわからなかったので、行列Bについて、以下の3つの条件を順番に判定した。
-
それぞれの列の次の要素は、1ずつの連続した数である。
-
同じ列の次の行は、前の行の要素に7を足したものである。
→1)で要素が連続しているかどうかは、判定しているので、それぞれの列の最初の要素のみ、判定を行う。 -
Mの数によって、最初の要素が満たす条件が変わってくる。
M=1の場合は、一番緩く、最初の要素B11はなんでもよい。
M=2の場合は、B11 % 7 in [1, 2, 3, 4, 5, 6]であればよい。(0以外)
M=3の場合は、B11 % 7 in [1, 2, 3, 4, 5]
...と続く
M=7の場合が一番厳しく、
B11 % 7 in [1]となる。
以上の条件を一般化すると、B11 % 7 in [_ for _ in range(1, 9-M)] となる。
かなり泥臭くやってしまったが、なんとかACできて、20分くらい余ったので、自分としては、上出来。
スマートな回答も調べて、参考にしておきたい。
次回も頑張りましょう。
お疲れさまでした。