2019-04-01から1ヶ月間の記事一覧

No.390 最長の数列

Quiz https://yukicoder.me/problems/no/390 Submit https://yukicoder.me/submissions/19573 解法 公式解説の通りではあるが、各dp[i]についてiの約数を列挙してdpを更新してACした 配るDPがオススメされていたが、制限時間ギリギリそうな列挙でトライした …

3つ組を重複なしで数える tuple + set

用途 (1, 5, 3)と(1, 3, 5)は同じものとして数えたいのでsetに入れて重複除去したい 値が3つあるのでpairには収まらない そこでtuple! Submit https://yukicoder.me/submissions/338555 Code #include <tuple> // new ! set<tuple<ll, ll, ll> > se; se.insert(make_tuple(a, b, c)); </tuple<ll,></tuple>…

Codeforces Round #551 (Div. 2) サーバルセット

A. Serval and Bus https://codeforces.com/contest/1153/problem/A 解法 サーバルがバス停に着く時刻 t 以降(ちょうども含む)で最初に来るバスを各ルートごとに求めればよい B. Serval and Toy Bricks https://codeforces.com/contest/1153/problem/B 解…

フロイドの循環検出法 Floyd's cycle-finding algorithm

始点からうさぎ(fast)と亀(slow)を走らせる fast += 2; slow += 1; 出発からm秒後に出会ったとする ループがあるときは上記の状態になっている ループの始点をOとする ループの一周の長さ:μ ループに入るまでの道の長さ:λ Oからd進んだところでうさぎと亀…

No.726 Tree Game

Quiz https://yukicoder.me/problems/no/726 Submit https://yukicoder.me/submissions/337152 解法 Xの次の素数を見つけ、pxとする。間隔(動けるスペース)はpx - X - 1 Yも同様 (1)+(2)の偶奇で勝敗が決まる 公式解法 X, Yの偶奇を見るだけでよいそう これ…

No.477 MVP

Quiz https://yukicoder.me/problems/no/477 Submit https://yukicoder.me/submissions/336588 解法 他の人は数式で解いていたが、私は二分探索で解いた 二分探索 left = 0 (絶対にMVPが取れない) right = inf (絶対にMVPが取れる) center = (left + right) …

No.123 カードシャッフル

Quiz https://yukicoder.me/problems/no/123 Submit https://yukicoder.me/submissions/336529 解法1 そのままに実装する 制約が緩いので通る 解法2 操作を逆順にたどる この解法で解いた 解法1より速い 星1.5よりは難しい Code int main(){ // input cin >>…

No.64 XORフィボナッチ数列

Quiz https://yukicoder.me/problems/no/64 Submit https://yukicoder.me/submissions/336402 解法 F2 = F1⊕F0 F3 = F2⊕F1 = F1⊕F0⊕F1 = F0 (同じ値をXORすると0になるため) F4 = ... = F1 周期性が見えるので解けました その他 すごく大きい値で直接には解…

No.22 括弧の対応

Quiz https://yukicoder.me/problems/no/22 Submit https://yukicoder.me/submissions/336370 解法 Stackで解いている人が多いけれど、私は別の方法で。 K番目が指すのは ( だと仮定する K以降に読み進めながら、(が来たらcount++, )が来たらcount--していき…

No.111 あばばばば

Quiz https://yukicoder.me/problems/no/111 Submit https://yukicoder.me/submissions/336368 解法 まず、aから始まる回文の数を考える サンプル2の場合 ababababa abaは4つ ababaは3つ abababaは2つ ababababaは1つ 取れる。 一般に1+2+3+...+Nとなりそう …

No.312 置換処理

Quiz https://yukicoder.me/problems/no/312 Submit https://yukicoder.me/submissions/336225 解法 解説の通り 素数を探すときはsqrt(N)まででいい、という定石 落とし穴 N = 大きい素数 x 2 のとき、解はNではなくN/2 この問題の設定により、2で割るチェッ…

No.228 ゆきこちゃんの 15 パズル

Quiz https://yukicoder.me/problems/247 Submit https://yukicoder.me/submissions/336214 画像 テストケース2 解法 シミュレーションする 0の置かれている位置にあるべき数字を考える 画像で言えば「12」(3行目4列目なので) そのあるべき数字は上下左右に…

No.561 東京と京都

Quiz https://yukicoder.me/problems/no/561 Submit https://yukicoder.me/submissions/336212 解法 動的計画法を使う dp[2][N] dp[i][j] i : 0:東京 1:京都 j : j日目 (0-index)の仕事を終えた後のお金 とする 前日の稼ぎと当日の稼ぎの関係は 前日東京→ 当…

B - 交通費

Quiz https://atcoder.jp/contests/bitflyer2018-final-open/tasks/bitflyer2018_final_b Submit https://atcoder.jp/contests/bitflyer2018-final-open/submissions/4881138 解法 editorialの通り 感想 lower_boundでiteratorを取ってきた後、+1, -1をした…

No.198 キャンディー・ボックス2〜三分探索〜

Quiz https://yukicoder.me/problems/no/198 Submit https://yukicoder.me/submissions/335991 解法 キャンディーの目的値を決めると操作回数が決まり、これは下に凸の関数になる 三分探索すればいい 学び while(right-left>3){ ll p0 = (2 * left + 1 * rig…

No.65 回数の期待値の練習

Quiz https://yukicoder.me/problems/no/65 Submit https://yukicoder.me/submissions/335985 解法 振る回数の更新式は提供されている E(K)以降は、もうK回を達成しているので振る回数は0であることに気づけば、後ろからのDPができる

long long用のpowが必要?

Quiz https://yukicoder.me/problems/no/164 Submit https://yukicoder.me/submissions/335477 pow for long long ll ll_pow(ll a, ll n){ ll ans = 1; FOR(i, 0, n){ ans *= a; } return ans; } 最初はpowを使っていたが大きい値(long longの範囲ギリギリ…

誤差と桁あふれはできれば避けたい

誤差と桁あふれに注意する必要があるよい問題(教材)がある。 Quiz https://yukicoder.me/problems/no/648 Submit https://yukicoder.me/submissions/335262 解法 t秒後の合計はt * (t+1) / 2 それとnが一致する整数があればいい tについて解の公式で解く …

No.346 チワワ数え上げ問題

Quiz https://yukicoder.me/problems/no/346 Submit https://yukicoder.me/submissions/335255 解法 各cを見つけたとき、後ろにいくつwがあるかが気になる 例えば後ろにwが5個あるとすれば、5C2の組み合わせがある 5個から2個を選ぶ組み合わせ cを見つけたと…

long long 0埋め C++ cpp zero padding

0埋め12桁の場合 型がlong longならlldと書く printf("%012lld\n", ans); 使った問題 https://yukicoder.me/problems/no/500 coutは?→ちょっと面倒 https://marycore.jp/prog/cpp/padding-left-right-zero/ AC https://atcoder.jp/contests/abc258/submissi…

F. Graph Without Long Directed Paths

Quiz https://codeforces.com/contest/1144/problem/F 内容 無向グラフが与えられる それを有向グラフにし、各パスの長さを2より小さくせよ できない場合は-1を返す Submit https://codeforces.com/contest/1144/submission/52118977 観察 自分に矢印が向い…