AtCoderチャレンジ供養会場(2020/01/22-2020/01/31)
コンテストでの時間切れや解けなかった過去問を振り返って供養していく
1/22: AtCoder Beginner Contest 152 F - Tree and Constraints
Difficulty: 1903 (記事作成時点) 実装としては 計算量は を求めるのに 、それを 解繰り返すので全体で 供養
問題
解法
(条件 を満たさないパターン) (条件 を満たさないパターン) (条件 を満たさないパターン)
となる
$$
\sum_{C \neq \emptyset, C \subseteq \mathcal{C}}(-1)^{|C| + 1}2^{N - 1 - n_{C}}
$$+1
、 に -2
として葉から根に向けて累積和を取ると、 間が正の数となるので、そのようになる辺の数を数えれば を求められる
躓いた点
1/23: SoundHound Inc. Programming Contest 2018 -Masters Tournament- E - + Graph
Difficulty: 2127 (記事作成時点) 実装は 計算量は条件を決める探索に 、条件を満たす の範囲を決めるのに なので、全体で 供養
問題
解法
i.e. あるパスで と表現され、別のパスで と表現されるとき、 ならば条件を満たす割り当ては存在しない(についても同様)
0
を出力して終了
0
を出力して終了0
を出力して終了0
を出力して終了1
を出力して終了躓いた点
1/24: AtCoder Regular Contest 050 B - 花束
1/25: CODE FESTIVAL 2017 qual C D - Yet Another Palindrome Partitioning
Difficulty: 2152 (記事作成時点) 実装は 計算量は1回のDP表の更新で比較対象とするのが定数なので (ただし定数部分に )供養
問題
解法
躓いた点
1/26: AtCoder Regular Contest 099 E - Independence
Difficulty: 2155 (記事作成時点) 実装は 計算量は隣接行列による幅優先探索、サイズと更新回数が のDPなので 供養
問題
解法
-1
を出力して終了躓いた点
1/27: AtCoder Grand Contest 027 C - ABland Yard
Difficulty: 2168 (記事作成時点) 計算量は 供養
問題
解法
AABB
の1回以上の繰り返しからなる閉路を作れるならば任意の文字列を作成できる
閉路の中にある頂点は A
の頂点にも B
の頂点にも移動できる
A
の頂点との接続数、ラベル B
の頂点との接続数とする
Yes
を、存在しなければ No
を出力する
A
の頂点にも B
の頂点にも移動できる頂点であり、AABB
を繰り返しながら移動すると鳩の巣原理によりいつか閉路を作る
閉路を作らないためには BA
のタイミングで今まで AABB
の起点になったことがない A
の頂点を選ぶしかないが、そのような頂点はいつか選べなくなる躓いた点
AABB
の閉路検出のみをしていてWA
1/28: 第二回全国統一プログラミング王決定戦予選 C - Swaps
Difficulty: 2178 (記事作成時点) 実装は 計算量は 供養
問題
解法
No
を出力して終了Yes
を出力して終了
Yes
、そうでないなら No
を出力
躓いた点
公式解説が分かりにくい 判定条件を整理しきれずWA
1/29: AtCoder Regular Contest 031 C - 積み木
Difficulty: 2181(estimated) (記事作成時点) 小さいものから 計算量は 供養
問題
解法
自身より大きい積み木の数が少ない方向に寄せる
という方法で決めていく
躓いた点
1/30: AtCoder Regular Contest 013 C - 笑いをとれるかな?
Difficulty: 2184(estimated) (記事作成時点) Nimの解き方を知っていれば簡単 計算量は で、 として 、もしくは を定数として 供養
問題
解法
LOSE
、そうでないなら WIN
を出力
躓いた点
1/31: AtCoder Grand Contest 021 B - Holes
Difficulty: 2191 (記事作成時点) 計算量は凸包の選択が 、角の計算は1つあたり定数時間なので、全体で 供養
問題
解法
躓いた点