hiro1729 競プロ

競プロの解説などを書きます。

灰diff

ABC338-A 解説

A - Capitalized? 問題文の通りに判定します。大文字かどうか、小文字かどうかはそれぞれisupper、islowerなどで判定できます。 S = input() print("Yes" if S[0].isupper() and all(i.islower() for i in S[1:]) else "No") #include <bits/stdc++.h> using namespace std;</bits/stdc++.h>…

ABC337-C 解説

C - Lining Up 2 解法1 人 $i$ に対してその後ろにいる人 $B_i$ を求める方法です。$B$ を求める時に $A_i=-1$ となる $i$ に対しては列の先頭なのでそれを持つ必要もあります。 N = int(input()) A = list(map(int, input().split())) B = [-1] * N now = 0…

ABC337-B 解説

B - Extended ABC 解法1 隣接する部分だけ見る方法 $S$ の隣接する2文字を見ます。これがAA,AB,AC,BB,BC,CCのいずれかならば$S$は拡張ABC文字列です。逆に言うと、BA,CA,CBのいずれかが含まれていると$S$は拡張ABC文字列ではありません。 S = input() for i …

ABC337-A 解説

A - Scoreboard 2チームのN試合分の野球の点数が与えられて、合計得点が高いチーム、または引き分けかを判定する問題です。N回ループを回して、合計得点を求め、あとはifで比較をするだけです。 N = int(input()) sx = 0 sy = 0 for _ in range(N): X, Y = m…

AGC010-A 解説

A - Addition 全ての和が偶数なら、奇数は偶数個あるので、奇数を2つずつ組にすると全て偶数になり、これは明らかにすべて合成できます。 そうでないなら、奇数は奇数個あるので、奇数をどのように合成しても必ず奇数が1つだけ残り、残りは全て偶数になるの…

ABC302-B 解説

B - Find snuke $H \times W$ のグリッドからsnukeを探す問題です。 解法1 向きに対して全部書く方法です。 H, W = map(int, input().split()) S = [input() for _ in range(H)] for i in range(H): for j in range(W - 4): if S[i][j] == 's' and S[i][j + …

ABC334-A 解説

A - Christmas Present $B$ と $G$ が異なるので、$B$ が大きい時はBat、$G$ が大きい時はGloveを出力すればいいです。 Python B, G = map(int, input().split()) if B > G: print("Bat") else: print("Glove") C++ #include <bits/stdc++.h> using namespace std; int main</bits/stdc++.h>…

ABC328-B 解説

B - 11/11 月と日の組み合わせを全探索します。月と日の組み合わせが正しい条件は、月と日の全ての数字が等しいことなので、setに突っ込みます。 Python N = int(input()) D = list(map(int, input().split())) cnt = 0 for i in range(N): for j in range(1…

ABC328-A 解説

A - Not Too Hard やるだけです。forで回してもいいし、Pythonではsumの内部で条件を判定することで簡単に書くことができます。 Python [(iを使った何か) for i in (リスト) if (iの条件)] と書くことでリストから条件を満たす値を抽出できます。 N, X = map…

ABC327-C 解説

C - Number Place ナンプレが正しいかどうかの判定です。 縦、横、ブロックごとにsetに突っ込んで全ての長さが $9$ であるかを判定すればいいです。 Python s = [list(map(int, input().split())) for _ in range(9)] a = [set() for _ in range(9)] b = [se…

ABC327-B 解説

B - A^A $A^{A} = B \le 10^{18} < 16^{16}$ なので、$A$ として $15$ 以下を全て調べればいいです。 Pythonでは $0^{0}=1$ なので、そのケースを含まないように注意しましょう。 Python b = int(input()) for a in range(1, 19): if a ** a == b: exit(prin…

ABC327-A 解説

A - ab 「aとbが隣接する」は「abまたはbaが含まれる」と言い換えられるので、そのまま書きます。 Python N = int(input()) S = input() print("Yes" if "ab" in S or "ba" in S else "No") C++ #include <iostream> using namespace std; int main() { int N; string </iostream>…