ヤマカサのプログラミング勉強日記

プログラミングに関する日記とどうでもよい雑記からなるブログです。

Java

[Aizu Online Judge]全探索 (ALDS1_5_A: Exhausive Search)

全探索 プログラミングコンテスト攻略のためのアルゴリズムとデータ構造の6章2節では、全探索のアルゴリズムについてでした。 6章では、再帰・分割統治法を取り扱います。プログラムで再帰といえば、階乗を求めるプログラムが思い浮かびます。 分割統治は、…

Java シリアライズ・デシリアライズ

わかりやすいJava オブジェクト指向編 わかりやすいJava オブジェクト指向編の12章は入力と出力に関する内容でした。テキストデータの入出力は勉強したことがあったんですが、Javaではなんとオブジェクトをファイルに出力することができるようです。また、C…

[yukicoder] No.378 名声値を稼ごう

数学よりな問題? No.378 名声値を稼ごう - yukicoder 問題の肝は、スキルを使わないときの名声値の計算と、スキルを使うとき何回目にスキルを使うべきかです。 考え方 回目の名声ポイントを とすると、 の最大値 は、 これは、 を満たす が を2 で割り続け…

[Aizu Online Judge] 二分法を利用した最適解の計算 (ALDS1_4_D: Allocation)

二分法 二分探索はソート済の配列を探索するアルゴリズムとして有名ですが、数値計算で二分法というものがあります。 二分法は、解の範囲が既知のとき、範囲の中間値を解の候補として探索していく手法です。 高校数学まででは馴染みがないですが、入試でみか…

[Aizu Online Judge] ハッシュを使った辞書の実装 (ALDS_1_4_C: Dictionary)

ハッシュ ハッシュとは、あるデータが与えられたときに、そのデータを代表する数値を得る操作です。その数値はハッシュ値と呼ばれ、直接データを比較するのではなく、ハッシュ値同士を比較することで、同じデータかどうかを判別可能になります。 異なるデー…

[yukicoder] yukicoder contest 191 に参加した感想

yukicoder contest 191 AtCoderのコンテストにしか参加したことがなかったのですが、偶然yukicoderのコンテストに参加する機会があったので、挑戦しました。 yukicoder contest 191 - yukicoder 時間内に解けた問題はAとBだけでしたが、コンテスト終了後にC…

[yukicoder] No.249 N言っちゃダメゲーム (2)

問題文を良く読まなければいけない No.249 N言っちゃダメゲーム (2) - yukicoder 問題文に 「2 回目以降のゲームでは、その前のゲームで負けたプレイヤーが自由に先攻か後攻かを選べます。」 と書いてあるのを見落とすとこの問題はレベル2以上になるのではな…

[yukicoder] No.172 UFOを捕まえろ

高校数学チックな問題? No.172 UFOを捕まえろ - yukicoder ちょっと頭を使う問題だと思います。 解き方 円の中心の座標 を とします。また、, を満たすとします。これは、UFOの位置を第1象限のみを考えても一般性を失わないためです。円の中心が第1象限に存…

[yukicoder] No.112 ややこしい鶴亀算

鶴亀算の応用? No.112 ややこしい鶴亀算 - yukicoder 今日もyukicoderのレベル1.5の問題を解いていきます。 この問題で、 番目の動物の足の数を とし、すべての動物の足の数を とします。 このとき、 が成り立ちます。また、 : 上記を全て足し合わせると、 …

深さ優先探索

AtCoder Typical Contest 001 A - 深さ優先探索 atc001.contest.atcoder.jp AtCoderの問題のなかで深さ優先探索に関する問題を解きました。深さ優先探索 (Depth First Search) は、グラフの探索アルゴリズムです。

[AtCoder] AtCoder Beginner Contest 097 D - Equals

グラフに関する問題 D - Equals 解き方が分からなかったので、解説を見ると、この問題はグラフに関する問題だということが分かりました。解説では、素集合データ構造を使って解くことができるそうですが、僕は隣接リストを作って解くことにしました。

[Java] 多次元の配列のソート

yamakasa.net 多次元の配列のソート 競技プログラミングの問題を解いてるときに、多次元の配列のソートってどうやるんだろうと悩んだことがありました。ここで多次元の配列のソートとは、例えば次の二つの配列A, Bが与えられたとします。 A = {4, 2, 5, 6, 1…

プログラミングコンテスト攻略のためのアルゴリズムとデータ構造 その1

番兵法 プログラミングコンテスト攻略のためのアルゴリズムとデータ構造の5.2 線形探索の項目では、番兵法が取り上げられていました。 プログラミングコンテスト攻略のためのアルゴリズムとデータ構造作者: 渡部有隆,Ozy(協力),秋葉拓哉(協力)出版社/メーカ…

[AtCoder] AtCoder Beginner Contest 097 C - K-th Substring について

部分文字列に関する問題 C - K-th Substring コンテスト中に解けず、ずっと考えたんですが答えが導けなかったので、解説を見て解くことができました。 解説を見た後では簡単な問題だと理解できたので、解法の発想に至るかどうかが大事な問題でした。

[yukicoder] No.88 次はどっちだ

手番に関する問題 No.88 次はどっちだ - yukicoder リバーシの盤面を見て手番を答える問題です。 番目に置かれている石を数えることで次の手番が先手か後手かが分かります。

[yukicoder] No.552 十分簡単な星1の問題

データの型の問題 No.552 十分簡単な星1の問題 - yukicoder この問題は与えられた整数を10倍して出力するという問題ですが、ポイントはデータの型だと思います。

素数判定メソッド

引数が素数かどうかを判定するメソッド AtCoderの問題で素数に関するものがあり、素数判定メソッドをメモします。 public static boolean isCheck(int n) { for(int i = 2; i < n; i++) { if(n % i == 0) { return false; } } return true; } シンプルっすな…

AtCoder Beginner Contest 096 の感想

AtCoder Beginner Contest 096 abc096.contest.atcoder.jp 結果 今回のコンテストでは時間内に全て解くことができました。D問題の配点が400だったので、いつもより優しい?感じだったんでしょうか。

[yukicoder] No.296 n度寝

時刻に関する問題 No.296 n度寝 - yukicoder アルゴリズムの問題で時刻に関するものは色々あると思いますが、今回はyukicoderで出された問題を考えたいと思います。

わかりやすいJava オブジェクト指向編 の勉強

進捗 9章まで進みました。 9章の内容は継承と多様性で、オブジェクト指向に直接的に関わる内容でした。オーバーロードをすることでメソッドの引数の順番や型を意識せずに使うことができます。オーバーライドは、一度定義したメソッドを新たに定義しなおすこ…

JavaFX でゲームプログラミング超入門 その8

パックマンのようなゲーム 前回に引き続きJavaFXでゲームを作るとういうことで、今回は敵の接触回数とスコアの管理を追加しました。 敵と接触後の無敵時間がないので、接触回数が感覚よりも多くなってしまっているのが改善点だと思います。 スコアの管理はテ…

わかりやすいJava

Javaの参考書 わかりやすいJavaの新しい本である"新わかりやすいJava オブジェクト指向徹底解説"が出ました(一か月前に)。 新わかりやすいJava オブジェクト指向徹底解説 作者: 川場隆 出版社/メーカー: 秀和システム 発売日: 2018/03/31 メディア: 単行本 …

[yukicoder] No.135 とりあえず1次元の問題 スタックオバーフロー

リジャッジ yukicoderでアルゴリズムの問題を解いていたら、自分の解法ではエラーが返されリジャッジの状態となる問題がありました。

ABC093D Worst Case レビュー

解説を見直してみる。 もう一度この問題を考えてみました。 D: Worst Case - AtCoder Beginner Contest 093 | AtCoder としても一般性を失いません。 のとき ①

String.split()を用いて文字列を分割してListに入れる

Arrays.asList() String.split()を使って文字列を配列に格納することができますが、普通の配列ではなく、Listに入れたい場合次のように書く必要があります。 List<String> str = new ArrayList<>(Arrays.asList(A.split("")));</string>

アルゴリズムとデータ構造を学ぶ

アルゴリズムとデータ構造 競技プログラミングを勉強していく上でアルゴリズムとデータ構造は避けて通ることができないと思います。 今までは初歩的な問題のみを解いていたので、データの整列などを意識して使ってこなかったので、これからはステップアップ…

[AtCoder] トリボナッチ数列

AtCoder Beginner Contest 006 AtCoderの問題でトリボナッチ数列に関する問題がありました。ABC006のB問題でトリボナッチ数列の値を10007で割った余りを出力せよという問題です。

[AtCoder] ABC093D Worst Case

AtCoderのコンテストに参加しました。 AtCoderのAtCoder Beginner Contest 093に昨日初めて参加しました。 解くことができた問題はA, B, Cでした。D問題は問題の意味は分かったんですが解法は分かりませんでした。厳密には、for文で時間を物凄くかかるアルゴ…

[AtCoder] ABC049C - 白昼夢 / Daydream

文字列に関する問題 AtCoder Beginners Selectionを進めていいるんですが、解答に詰まった問題があったので、記事にしたいと思います。 AtCoder Beginners Selection - AtCoder

JavaFX でゲームプログラミング超入門 その7

JavaFXでパックマンのようなゲームを作る 前回に引き続き、パックマンのようなゲームを作っていきたいと思います。 www.youtube.com