アルゴリズム

ランレングス圧縮

ランレングス圧縮は、可逆性の圧縮アルゴリズムです。 具体的な圧縮方法は、ある文字が連続して何回出ているか、を記録していく方法です。 例を挙げると、「abbccc」という文字列があった場合、「a1b2c3」というように、文字+連続した回数を繰り返すことで…

bit全探索

bit全探索について学びます。 bit全探索とは 探索をbitを用いて行うことです。 あるN個のものから、選択する・しないを0か1で表すことで、全てのパターンを列挙することができます。 例えば、N=4のとき、24=16パターンの列挙に、0000〜1111の2進数を用います…

ABC164 復習

今回もC問題までしか解けませんでした。 というわけで、復習です。 問題は以下。 atcoder.jp A問題 Sheep and Wolves 問題概要は、2つの値を比較した結果を出力すること。 以下、私の回答です。 S, W = map(int, input().split()) if S <= W: print('unsafe'…

ABC163 復習

unratedになってしまったのは残念でしたね。 とはいえ、「解く」ことは大事なので、やってみました。 今回はCまですんなり解けました。 A問題 円周の長さを求める問題でした。 円周の長さを求める公式(直径×π)と、小数の扱いに気を付ければ解けますね。 py…

ABC162 復習

atcoder.jp A問題 文字列に7が含まれているかどうかです。 pythonなら、forとifが書ければ解けますね。 n = input() for i in n: if i == '7': print('Yes') break else: print('No') B問題 かの有名なFizzBuzzですね。問題では数値の和を出力するように少し…

ABC161 復習

atcoder.jp A問題 変数のスワップができれば解けますね。 こういう時、Pythonは便利ですよね。 x, y, z = map(int, input().split()) x, y = y, x x, z = z, x print(str(x) + ' ' + str(y) + ' ' + str(z)) B問題 問題文にあるものをそのまま記載すればいい…

ABC159 復習

復習です。 A問題 ハマりました。 2つ選んで偶数になるのは、偶数・偶数か、奇数・奇数の組み合わせしかないので、N、Mそれぞれについて組み合わせを調べればヨシ。 pythonでは、itertoolsを使用すると解きやすいです。 import itertools #例えば、10個のも…

DFS(深さ優先探索)

DFSについて学びました。 参考にしたのはこの記事です。 基本編 以下が、DFSを実現する基本的なソースコードです。 #頂点数 #競プロでは入力を受け付けるが、ここでは気にしない v = 5 #グラフは2次元配列であらわす(無向グラフ) graph = [[] for i in ran…

AtCoderに向けて勉強することのメモ

いろいろ勉強したいことがあるので、勉強する予定のものを記載。 随時更新していく所存。 累積和 しゃくとり法 DFS(深さ優先探索) BFS(幅優先探索) union find DP(動的計画法)