最初に
a~c問題が簡単でd問題からが一気に難しくなった
本当になにかの予選かという感じだった
僕はそのa~c早解きゲーに勝利し?緑パフォ出した
そしてチェス関連の問題が多かった
最近あったこと(話さなくていいので折りたたみ)
-
前回で話していた自作ライブラリの調子が良くコーディングスピードがあがりました
-
zennに登録してスクラップ機能が良かったので今後も使おうと思う
-
ubuntuを2,3週間前に24.10にアップデートしたのだが 今更起動音を聞いてみたら臨場感がエグかった
-
yukicoderの作問が面白かったけどtester募集がほぼ無理 Xのアカウントが作れないため(中1だが2月生まれのためまだ12歳) 別に頼んでないので大丈夫です & 問題ストック 一つだけw
それじゃ一問ずつ感想書きますか
A問題
長さ3の文字列が与えられそれを並び替えて文字列 ABC ができますかという問題
僕は a b cのカウントを用意してそれがすべて1ならOKみたいなコードを書いた
ACコード(ライブラリ抜粋) 全文
関数名はご想像にお任せします(無責任) これがあと2つある
S = s()
a, b, c = 0, 0, 0
for t in S:
if t == "A":
a += 1
elif t == "B":
b += 1
elif t == "C":
c += 1
if a == 1 and b == 1 and c == 1:
print("Yes")
else:
print("No")
ライブラリ作ってんのならYesNo関数ぐらいは作らなきゃ
B問題
問題文を要約する
$8 \times 8$の盤面の情報が与えられます
(i,j)が.なら空マス #ならルークが置かれています
ルークはi行目に置かれているコマ と j列目に置かれているコマを取ることができます
あなたはすべてのルークに取られないようにコマを置く方法は何通りありますか
解法の文章化ができないので解説見て下さい すいません
解説URL
ACコード(ライブラリ抜粋) 全文
関数名はご想像にお任せします(無責任)
h = [False] * 8
w = [False] * 8
for k in range(8):
l = list(s())
if "#" in l:
h[k] = True
for i in range(8):
if l[i] == "#":
w[i] = True
ans = 0
for i in range(8):
for k in range(8):
if not w[k] and not h[i]:
ans += 1
print(ans)
C問題
問題文が複雑なのでパス(コイツどんどん甘えてきている)
とりあえず取られる場所をすべてsetで保存して
それから条件を満たすマスの数をansに保存する
最終的な答えは$N^2-ans$でOK
ACコード(ライブラリ抜粋) 全文
関数名はご想像にお任せします(これで終了)
N, M = il()
L = set()
for _ in [0] * M:
a, b = il()
L.add((a, b))
L.add((a + 2, b + 1))
L.add((a + 1, b + 2))
L.add((a - 1, b + 2))
L.add((a - 2, b + 1))
L.add((a - 2, b - 1))
L.add((a - 1, b - 2))
L.add((a + 1, b - 2))
L.add((a + 2, b - 1))
ans = 0
n2 = N**2
for a, b in L:
if 1 <= a <= N and 1 <= b <= N:
ans += 1
print(n2 - ans)
D問題
C問題に続き問題文の要約はパス(コイツ本当に甘々だな)
色々考えたけどわからなかった
diff見たら緑中間ぐらいあった
解説URL
E問題
問題文を要約(コイツ急に復活したけど問題文すごい短い)
$P$iを$P$piで同時に更新する
以下の行動をK回繰り返す
ダブリングだと思ってやってたけど全然違った
そして青diffなめててすいません
最後に
やっぱり早解きゲーだった3完だけで緑パフォだった
そしてB問題の感想、飛車で説明しようかなと思ったが、自分で混乱してきて結局、問題文のまま説明した。
レートは50ぐらい上がりました
そしてAJLの中1がヤバそうです。青パフォ出した人がいて、今後大変そうです
あと同学年(中1)の同レート帯の方々すごい上がってた 出遅れ組になってしまいました