AtCoder Beginner Contest 262 メモ(A-D)
今回の結果
2AC
C問題が難易度が低いのに解けないのは痛い。
通らないテストケースの原因をいかに見つけられるかが課題。
A - World Cup
Difficulty: 8
問題文
あるスポーツ大会は西暦年を
現在が西暦
制約
2000≤Y≤3000 -
は整数Y
入力
入力は以下の形式で標準入力から与えられる。
出力
答えを出力せよ。
入出力例
入力例 1
2022
出力例 1
2022
入力例 2
2023
出力例 2
2026
入力例 3
3000
出力例 3
3002
参加中に考えたこと
Y \space mod \space 4 = 0 \longrightarrow Y+2 Y \space mod \space 4 = 1 \longrightarrow Y+1 Y \space mod \space 4 = 2 \longrightarrow Y Y \space mod \space 4 = 3 \longrightarrow Y+3
これを1行で書けるのか分からないが、複雑な式になりそうなので素直に分岐を4つ書いて完了。
考察・感想
他の人の回答を見て1行で解いている人の式を見たけど、かなりややこしかったのでここまでやる必要はないかな。
解き方としてif文一択でしか考えてなかったけど、while文を使う方法(
B - Triangle (Easier)
Difficulty: 220
問題文
以下の条件を全て満たす整数
1≤a<b<c≤N - 頂点
と頂点a を結ぶ辺が存在する。b - 頂点
と頂点b を結ぶ辺が存在する。c - 頂点
と頂点c を結ぶ辺が存在する。a
制約
3 \leq N \leq 100 1 \leq M \leq \frac{N(N - 1)}{2} 1 \leq U_i \lt V_i \leq N \, (1 \leq i \leq M) (U_i, V_i) \neq (U_j, V_j) \, (i \neq j) - 入力は全て整数
入力
入力は以下の形式で標準入力から与えられる。
出力
答えを出力せよ。
入出力例
入力例 1
5 6
1 5
4 5
2 3
1 4
3 5
2 5
出力例 1
2
入力例 2
3 1
1 2
出力例 2
0
入力例 3
7 10
1 7
5 7
2 5
3 6
4 7
1 5
2 4
1 3
1 6
2 7
出力例 3
4
参加中に考えたこと
この問題を読み替えると、グラフの中に三角形はいくつあるかを求めるのと同じことのよう。
但し、この3重ループの中で条件にある3辺の存在を調べるのに更にループを使ってしまうとTLEする可能性があると思ったのと、あとあんまり綺麗ではない。
最初に辺の情報を
考察・感想
組み合わせを数え間違えないようにするためにする必要があるが、方法としては2通り思いついた。
- 二次元配列の中に漏れがないように
の両方に値を入れ、重複して数えないように(U_i,V_i), (V_i,U_i) の範囲でループさせる0 \le i < N-2, \enspace i+1 \le j < N-1, \enspace j+1 \le k < N - 二次元配列には
のみ値を入れ、(U_i,V_i) の3つの値があるものを数え上げる(i,j), (j,k),\color{#FF0000}(i,k)
2は
C - Min Max Pair
Difficulty: 362
問題文
以下の条件を全て満たす整数
1 \leq i \lt j \leq N \min(a_i, a_j) = i \max(a_i, a_j) = j
制約
2 \leq N \leq 5 \times 10^5 1 \leq a_i \leq N \, (1 \leq i \leq N) - 入力は全て整数
入力
入力は以下の形式で標準入力から与えられる。
出力
答えを出力せよ。
入出力例
入力例 1
4
1 3 2 4
出力例 1
2
入力例 2
10
5 8 2 2 1 6 7 2 9 10
出力例 2
8
参加中に考えたこと
Nの値が大きいので計算量が
入力例2の答えが8つなので洗い出してみると、
ここから規則性を考えると、条件を満たすものとして2パターンがあることに気づいた。
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | |
---|---|---|---|---|---|---|---|---|---|---|
5 | 8 | 2 | 2 | 1 | 6 | 7 | 2 | 9 | 10 | |
△ | △ | △ | 〇 | 〇 | △ | 〇 | 〇 |
P(i) = 〇 \longleftarrow i = A_i -
かつP(i) = △ \longleftarrow i = A_j j=A_i
2の△において、i,jで対になるので数は必ず偶数個になり、
1の〇は、〇の中から任意の2つを選んだものは全て条件を満たすので、組の数としては
この2つのパターンで数えた組の和が答えになる、と考えた。
この例の場合だと
が、通らないケースがあってACできない。
漏れているケースが分からずACできず。
考察・感想
上のテキストを書いた後に改めてコードを書いたらすんなりACした。。
△の数え方をミスってた。
落ち着いて解けば全然できる問題なのに時間に迫られるとこういうミスをしてしまうなぁ。
D - I Hate Non-integer Number
Difficulty: 1213
問題文
項数が
制約
1≤N≤100 1≤a_i≤10^9 - 入力はすべて整数
入力
入力は以下の形式で標準入力から与えられる。
出力
答えを出力せよ。
入出力例
入力例 1
3
2 6 2
出力例 1
6
入力例 2
5
5 5 5 5 5
出力例 2
31
参加中に考えたこと
そのまま計算すると
全然解き方が分からない。
考察・感想
解説を読んでも3次元DP?が全然分からず、今の自分では解けない問題。
というか、解説があまりに短くて、これで分かる人はACしてるんじゃないかと思う。。
DPは基本的はものしかやってないから、AtCoderにあるDP練習用を進めて幅を広げていきたい。
Discussion