# 10/21 ~ 10/28 ## 10/21 2072diff [ARC081-E Don't Be a Subsequence](https://atcoder.jp/contests/arc081/tasks/arc081_c) ### 解法 部分列dpをやる [提出](https://atcoder.jp/contests/arc081/submissions/59026044) ### 感想 非典型に強くなるために始めたARC精進だが、結局典型 or 変なギャグしか解けていない。 ## 10/22 試験管1898diff [ARC051-C 掛け算](https://atcoder.jp/contests/arc051/tasks/arc051_c) ### 解法 何回か操作を行うと、 $A\times \min (a)\gt \max (a)$ という状態が保たれるようになる。こうなると、操作する値の列は周期性を持つようになる。 周期性が出るまで愚直に操作を行って、周期性が出たらまとめて計算する。 [提出](https://atcoder.jp/contests/arc051/submissions/59050217) ### 感想 CodeChefかCFで見たことある問題設定だった。 $A = 1$ がいやらしいな。 ## 10/23 試験管2004diff [ARC039-C 幼稚園高橋君](https://atcoder.jp/contests/arc039/tasks/arc039_c) ### 解法 高橋君のいる場所の $x, y$ 座標の絶対値は $K + 1$以下である。この範囲内を区間をsetで管理するテクをつかってシミュレーションする。 [提出](https://atcoder.jp/contests/arc039/submissions/59075600) ### 感想 ライブラリ化していない.... ## 10/24 試験管2997diff [ARC028-D 注文の多い高橋商店](https://atcoder.jp/contests/arc028/tasks/arc028_4) ### 解法 https://maspypy.com/%E5%A4%9A%E9%A0%85%E5%BC%8F%E3%83%BB%E5%BD%A2%E5%BC%8F%E7%9A%84%E3%81%B9%E3%81%8D%E7%B4%9A%E6%95%B0%EF%BC%88%EF%BC%92%EF%BC%89%E5%BC%8F%E5%A4%89%E5%BD%A2%E3%81%AB%E3%82%88%E3%82%8B%E8%A7%A3%E6%B3%95 から大体の方針を知っていた。自力で解法を導けることを確認して通した。 注文が無い場合を考える。今回のdpをFPSで解釈すると$[x^{M}]\prod_{i = 1}^{N}(1 + x + x^2 + \cdots + x^{A_{i}})$となる。等比数列の和の公式から$(1 + x + x^2 + \cdots + x^{A_{i}}) = \frac{x^{A_{i} + 1} - 1}{x - 1}$である。この計算は共に$O(M)$で計算することができる。 - $\sum q_{i}x^{i} = F(x)\sum p_{i}x^{i}$として、次数が同じ所をまとめた$M + 1$個の方程式を建てるとわかる 注文がある方を考える。クエリを先読みしておく。以下のようなことができれば良い。 1. $i$ 種類目の商品からの寄与を打ち消す 2. $j = 1, 2, \dots, A_{i}$について、$\text{dp}[M - j]$を計算する 3. $i$ 種類目の商品からの寄与を戻してあげる 2は配列にアクセスするだけ、3は$\frac{x^{A_{i} + 1} - 1}{x - 1}$をかける。1は逆をすれば良いので、$\frac{x - 1}{x^{A_{i} + 1} - 1}$をかける。 [提出](https://atcoder.jp/contests/arc028/submissions/59101716) ### 感想 特になし ## 10/25 1964diff [ARC105-C Camels and Bridge](https://atcoder.jp/contests/arc105/tasks/arc105_c) ### 解法 可能、不可能の判定は自明。 各ラクダの集合及び各橋について、「ラクダの集合が同時に橋に存在して、耐えられるか?」というのを計算して良い。 ここから各ラクダの集合に対して、「ラクダの集合が一列に並んでいるときのvalidな間隔の最小値」が前計算できる。 ラクダの並べ方を固定する。前計算の情報から、 $O(N^2)$ 個の「$r$番目のラクダと$l$番目のラクダは少なくともOO離れていてはいけない」という制約に帰着する。 これはできる。 $O(N^2N!)$ で解けた。 [提出](https://atcoder.jp/contests/arc105/submissions/59126007) ### 感想 あんまり難しくなかった。CDの難易度が逆転しているっぽくて、それがdiffが高めな原因かも。 ## 10/26 1749diff [ARC072-D Alice&Brown](https://atcoder.jp/contests/arc072/tasks/arc072_b) ### 解法 実験すると $|X - Y|\le 1$ だと後手必勝、それ以外先手必勝と予想できる -> 投げるとAC [提出](https://atcoder.jp/contests/arc072/submissions/59140764) ### 感想 まともに頭を使おうとした時点で敗北なんだろうな。構築とゲームは別ゲーすぎる。 ## 10/27 1750diff [ARC111-C Too Heavy](https://atcoder.jp/contests/arc111/tasks/arc111_c) ### 解法 $A_{i}$が最小の人を一人取り、$u$とする。$u$と$I_{u}$のswapを試みる。ただし、$I$を$P$の逆置換とする。 - $u = I_{u}$ならばそもそもswapする必要が無く、人$u$は存在しないものとして考えて良い。サイズ$N - 1$の問題に帰着する。 - そうでなくて、$A_{u}\le B_{P_{u}}$ならば、人$u$はswapに参加できない。$u$はずっと荷物を交換できないので条件を満たすことができない。`-1`を出力する。 - そうでないならば、swapする。$A$の最小が$A_{u}$であるという仮定から、人$I_{u}$はこの交換によって疲れることは無い。$u = P_{u}$となったため、サイズ$N - 1$の問題に帰着する。 ~~一回の荷物の交換で$P_{i} = i$なる$i$は高々1しか増やせない。この手続きでは一回のswapでそのような$i$を必ず増やしている。~~ よって条件が達成可能ならば、この手続きで操作回数の下界を達成することが可能である。 [提出](https://atcoder.jp/contests/arc111/submissions/59202172) ### 感想 青diffでおっかなびっくりしていたが、結構シンプル
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up