はまやんはまやんはまやん

hamayanhamayan's blog

2019-01-01から1年間の記事一覧

地ならし / Leveling [第一回 アルゴリズム実技検定 過去問 J]

https://atcoder.jp/contests/past201912-open/tasks/past201912_j 前提知識 ダイクストラ 解説 https://atcoder.jp/contests/past201912-open/submissions/9257724 難しい問題。 左下を点X, 右下を点Y, 右上を点Zとしておこう。 簡単にX->Yの最短距離+Y->Z…

部品調達 / Procurement [第一回 アルゴリズム実技検定 過去問 I]

https://atcoder.jp/contests/past201912-open/tasks/past201912_i 前提知識 bitDP 解説 https://atcoder.jp/contests/past201912-open/submissions/9257465 bitDPを知らないと解くのは難しい。 もしわからない場合は、bitdpでググって概要を理解してきて欲…

まとめ売り / Bulk Selling [第一回 アルゴリズム実技検定 過去問 H]

https://atcoder.jp/contests/past201912-open/tasks/past201912_h 解説 https://atcoder.jp/contests/past201912-open/submissions/9257326 さて、色々な操作があるが、愚直に操作していくと、O(QN)となって間に合わない。 セット販売と全種類販売について…

組分け / Division [第一回 アルゴリズム実技検定 過去問 G]

https://atcoder.jp/contests/past201912-open/tasks/past201912_g 解説 https://atcoder.jp/contests/past201912-open/submissions/9253193 競技プログラミング的なやりかたで解決する。 3つ以下のグループに分けるので、全てのやり方を試してもO(3N)である…

DoubleCamelCase Sort [第一回 アルゴリズム実技検定 過去問 F]

https://atcoder.jp/contests/past201912-open/tasks/past201912_f 解説 https://atcoder.jp/contests/past201912-open/submissions/9253007 単語は大文字2つで挟まれているので、大文字が2つ現れた時点で文字列を分裂していく。 単語分割が問題の最も難しい…

SNS のログ / Restore [第一回 アルゴリズム実技検定 過去問 E]

https://atcoder.jp/contests/past201912-open/tasks/past201912_e 解説 https://atcoder.jp/contests/past201912-open/submissions/9252782 実装が厳しくなってくる。 N≦100なので、計算量は雑にやっても問題ない。 follow[i][j] := iがjをフォローしている…

重複検査 / Duplicated? [第一回 アルゴリズム実技検定 過去問 D]

https://atcoder.jp/contests/past201912-open/tasks/past201912_d 解説 https://atcoder.jp/contests/past201912-open/submissions/9252399 サンプル1の説明を見ると、個数が重要そうである。 書き換えが発生していなかった場合は、全て1個であるパターンで…

3 番目 / The Third [第一回 アルゴリズム実技検定 過去問 C]

https://atcoder.jp/contests/past201912-open/tasks/past201912_c 解説 https://atcoder.jp/contests/past201912-open/submissions/9252314 A~Fを降順ソートして3番目を答えればよい。 ソートするために配列に入れるので、入力を受け付けるときもA,B,...と…

増減管理 / Up and Down [第一回 アルゴリズム実技検定 過去問 B]

https://atcoder.jp/contests/past201912-open/tasks/past201912_b 解説 https://atcoder.jp/contests/past201912-open/submissions/9252279 隣り合う2要素について、実装をしていく問題。 実装を頑張る問題であり、特に注意点も無いが、vectorのsizeメソッ…

2 倍チェック / Is It a Number? [第一回 アルゴリズム実技検定 過去問 A]

https://atcoder.jp/contests/past201912-open/tasks/past201912_a 解説 https://atcoder.jp/contests/past201912-open/submissions/9252220 入力はエラーとなる場合があるので、整数ではなく、文字列で読み込もう。 IntParse的なやつを使って、例外が出たら…

Divide Points [Good Bye 2019 E]

https://codeforces.com/contest/1270/problem/E 解説 https://codeforces.com/contest/1270/submission/67941885 順位表を見ると、みんな爆速で通しているので、なにか特殊なルールで分けるのだろうというのは分かる。 ヤバい状況を考えるというのが抜けて…

Strange Device [Good Bye 2019 D]

https://codeforces.com/contest/1270/problem/D 解説 https://codeforces.com/contest/1270/submission/67932061 リアクティブといえば二分探索であるが、二分探索が適用できそうな感じは無い。 制約も二分探索を示唆していないので、なにか別の方針で行く…

Make Good [Good Bye 2019 C]

https://codeforces.com/contest/1270/problem/C 解説 https://codeforces.com/contest/1270/submission/67931185 難しい問題に見える。 和は別に大丈夫だが、xor和を2倍するという操作はいかにもヤバそうに見える。 加えて問題の方にも操作は最小化する必要…

Interesting Subarray [Good Bye 2019 B]

https://codeforces.com/contest/1270/problem/B 解説 https://codeforces.com/contest/1270/submission/67930787 条件を満たすものがあるならば、隣り合う2つで満たすものがある。 上手く説明するのが難しいが、条件が満たされるのは、123...のような連続に…

Card Game [Good Bye 2019 A]

https://codeforces.com/contest/1270/problem/A 解説 https://codeforces.com/contest/1270/submission/67930164 このゲームは最大のカードを持っている方が勝つ。 これは、最大のカードを持っている方が、最大のカードを出し続けることで連勝できるためで…

New Year Parties [Codeforces Round #611 (Div. 3) E]

https://codeforces.com/contest/1283/problem/E 解説 https://codeforces.com/contest/1283/submission/67851492 最小と最大別々に考えよう。 DPでうまいことやる? 最小のときは、同じ値は特に考える必要はないので、1つにまとめておく。 これで「dp[i] :=…

Christmas Trees [Codeforces Round #611 (Div. 3) D]

https://codeforces.com/contest/1283/problem/D 解説 https://codeforces.com/contest/1283/submission/67849985 人を適切に配置する問題であるが、最適解を考えると、木の周りに順番に人を配置していくのがいいだろう。 木を始点にしてBFSをしていくのがい…

Balancing Network [AtCoder Grand Contest 041 E]

https://atcoder.jp/contests/agc041/tasks/agc041_e 前提知識 bitset高速化 解説 https://atcoder.jp/contests/agc041/submissions/9195266 2つの問題が入っているが、全く別のアプローチで解く。 T=1では、bitset高速化で解く。 dp[i][j] := 平衡器iから平…

Domino Quality [AtCoder Grand Contest 041 C]

https://atcoder.jp/contests/agc041/tasks/agc041_c 関連 構築 解説 https://atcoder.jp/contests/agc041/submissions/9194564 DPとかできないか色々考える。 何も出てこない。 これは、あれか、なんか性質を仮定して解くやつか。 クオリティはそんなに大き…

Voting Judges [AtCoder Grand Contest 041 B]

https://atcoder.jp/contests/agc041/tasks/agc041_b 前提知識 二分探索 解説 https://atcoder.jp/contests/agc041/submissions/9194374 Aをソートしておくと、実は採用されるかどうかは単調性を持つ。 A[i]が採用されるのであれば、A[i+1]も採用されること…

Table Tennis Training [AtCoder Grand Contest 041 A]

https://atcoder.jp/contests/agc041/tasks/agc041_a 解説 https://atcoder.jp/contests/agc041/submissions/9192722 まず、2人の友達は同時に動くため、互いに近づいて行っても、交わることができる場合とできない場合がある。 B-Aが偶数なら交わることがで…

大きなクリスマスプレゼント [パ研合宿2019 第3日「パ研杯2019」 E]

https://atcoder.jp/contests/pakencamp-2019-day3/tasks/pakencamp_2019_day3_e 前提知識 二次元累積和 BFS 解説 https://atcoder.jp/contests/pakencamp-2019-day3/submissions/9144974 クエリ問題では、まず1クエリだとどう解くかを考えるのが定石。 操作…

パ研軍旗 [パ研合宿2019 第3日「パ研杯2019」 D]

https://atcoder.jp/contests/pakencamp-2019-day3/tasks/pakencamp_2019_day3_d 解説 https://atcoder.jp/contests/pakencamp-2019-day3/submissions/9144334 ここから競技プログラミングになれていないと、満点解答を狙うには難しいかもしれない。 さて、…

カラオケ [パ研合宿2019 第3日「パ研杯2019」 C]

https://atcoder.jp/contests/pakencamp-2019-day3/tasks/pakencamp_2019_day3_c 解説 https://atcoder.jp/contests/pakencamp-2019-day3/submissions/9144292 難しい問題に直面したときは、まずは全探索ができないか考えてみよう。 何を全探索するかである…

多数決 [パ研合宿2019 第3日「パ研杯2019」 B]

https://atcoder.jp/contests/pakencamp-2019-day3/tasks/pakencamp_2019_day3_b 解説 https://atcoder.jp/contests/pakencamp-2019-day3/submissions/9144087 白の人数と黒の人数を数えて多い方が答えになる。 C++なら==で比較すれば判定できる。 int N; //…

パ研合宿2103 [パ研合宿2019 第3日「パ研杯2019」 A]

https://atcoder.jp/contests/pakencamp-2019-day3/tasks/pakencamp_2019_day3_a 解説 https://atcoder.jp/contests/pakencamp-2019-day3/submissions/9144056 よーくみるとB-A+1日が答え。 int A, B; //--------------------------------------------------…

Playing Tag on Tree [AtCoder Beginner Contest 148 F]

https://atcoder.jp/contests/abc148/tasks/abc148_f 解説 https://atcoder.jp/contests/abc148/submissions/9103846 色々考えることができそう。 以下解法は全探索しているが、色々なことを要求しているので、木へのライブラリを余り持ってない場合は、 ち…

Double Factorial [AtCoder Beginner Contest 148 E]

https://atcoder.jp/contests/abc148/tasks/abc148_e 解説 https://atcoder.jp/contests/abc148/submissions/9103493 大学受験を済ませている人は、この問題を見たらピンと来るかもしれない。 ある数の末尾に続く0の個数はある数を素因数分解したときのmin(2…

Brick Break [AtCoder Beginner Contest 148 D]

https://atcoder.jp/contests/abc148/tasks/abc148_d 解説 https://atcoder.jp/contests/abc148/submissions/9103243 400点問題にしては、なかなか難しそうな問題に見える。 何か特殊な操作をするのだろうか。 壊すレンガを最小化するのではなく、残すレンガ…

Snack [AtCoder Beginner Contest 148 C]

https://atcoder.jp/contests/abc148/tasks/abc148_c 前提知識 最小公倍数の効率的な求め方 解説 https://atcoder.jp/contests/abc148/submissions/9103143 今回の問題はAとBの最小公倍数が答えとなる。 ライブラリとして、最小公倍数を高速に求めるものをも…